2012-07-22 7 views
11

Gibt es eine Funktion in Python, integriert oder in der Standardbibliothek, um eine Zeichenfolge auf eine bestimmte Länge zu begrenzen, und wenn die Länge überschritten wurde, fügen Sie drei Punkte (. ..) Danach?Python-Funktion zum Überdecken einer Zeichenfolge mit einer maximalen Länge

Zum Beispiel:

 
>>> 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" 

Antwort

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

Ich nehme das als ** nein **, um es in der Standardbibliothek zu sein. Danke für die Funktion :) – Hubro

+0

@RussellBorogove: Danke - Ich habe das bearbeitet ... Netter Fang :) –

1

Die wohl flexibile (kurz nur Slicing) Art und Weise ist ein Wrapper um textwrap.wrap wie zu erstellen: (Beachten Sie aber, es fordert zu sein Smart an einigen Stellen über Spaltung, die nicht nach genau das Ergebnis sind Sie bekommen können - aber es ist ein handliches Modul wissen)

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 ...'] 

Dann nehmen Sie einfach die Elemente, nach denen Sie suchen.

Verwandte Themen