2012-07-22 13 views
11

Czy istnieje funkcja w języku Python, wbudowana lub w bibliotece standardowej, do blokowania ciągu znaków do określonej długości, a jeśli długość została przekroczona, dodaj trzy kropki (. ..) po tym?Funkcja języka Python do ograniczania ciągu znaków do maksymalnej długości

Na przykład:

 
>>> hypothetical_cap_function("Hello, world! I'm a string", 10) 
"Hello, ..." 
>>> hypothetical_cap_function("Hello, world! I'm a string", 20) 
"Hello, world! I'm..." 
>>> hypothetical_cap_function("Hello, world! I'm a string", 50) 
"Hello, world! I'm a string" 

Odpowiedz

20
def cap(s, l): 
    return s if len(s)<=l else s[0:l-3]+'...' 
+0

Przyjmę to jako ** nie **, ponieważ jest w standardowej bibliotece. Dzięki za funkcję :) – Hubro

+0

@RussellBorogove: Dzięki - edytowałem to ... Miłego połowu :) –

1

Prawdopodobnie najbardziej elastyczna (brakuje tylko krojenie) sposobem jest stworzenie owijkę wokół textwrap.wrap takich jak: (Pamiętaj jednak, że nie starają się być inteligentne o rozszczepienie w niektórych miejscach, które nie mogą uzyskać dokładnie wyniku, który jesteś po - ale to poręczny moduł wiedzieć)

def mywrap(string, length, fill=' ...'): 
    from textwrap import wrap 
    return [s + fill for s in wrap(string, length - len(fill))] 

s = "Hello, world! I'm a string" 
print mywrap(s, 10) 
# ['Hello, ...', 'world! ...', "I'm a ...", 'string ...'] 

Następnie weź elementy, których szukasz.

Powiązane problemy