Nuovo nella versione 2.3.
Il modulo textwrap fornisce due utili funzioni, wrap() e fill(), di TextWrapper, la classe che effettua tutto il lavoro, e una funzione di utilità dedent(). Se dovete solo creare un involucro (NdT: wrap) o riempire (NdT: fill) una o due stringhe, le prime due funzioni dovrebbero essere sufficienti; altrimenti, dovreste usare un'istanza di TextWrapper.
text[, width[, ...]]) |
Gli argomenti opzionali di tipo keyword corrispondono agli attributi
dell'istanza di TextWrapper, documentati più avanti. Il valore
predefinito per width è 70
.
text[, width[, ...]]) |
"\n".join(wrap(text, ...))
In particolare, fill() accetta esattamente gli stessi argomenti di tipo keyword di wrap().
Sia wrap() che fill() lavorano creando un'istanza di TextWrapper, e chiamando un singolo metodo su di essa. Quell'istanza non viene riutilizzata, così per applicazioni che creano involucri o riempiono molte stringhe di testo, potrebbe essere più efficace creare il proprio oggetto TextWrapper.
Una funzione ulteriore di utilità, dedent(), viene fornita per rimuovere l'indentazione dalle stringhe che hanno degli spazi bianchi non desiderati alla sinistra del testo.
text) |
Questa viene tipicamente usata per per rendere le stringhe con il sistema della quotatura tripla, allineate con il margine sinistro dello schermo (o altro dispositivo di output), mantenendo comunque la forma indentata nel codice sorgente.
Per esempio:
def test(): # Termina la prima riga con \ per evitare la riga vuota! s = '''\ hello world ''' print repr(s) # stampa ' hello\n world\n ' print repr(dedent(s)) # stampa 'hello\n world\n'
...) |
wrapper = TextWrapper(initial_indent="* ")
wrapper = TextWrapper() wrapper.initial_indent = "* "
Potete riutilizzare lo stesso oggetto TextWrapper più volte, e potete cambiare qualsiasi argomento facoltativo attraverso l'assegnazione diretta degli attributi dell'istanza tra i vari utilizzi.
Gli attributi dell'istanza di TextWrapper (e gli argomenti di tipo keyword del costruttore) sono i seguenti:
70
) La massima lunghezza delle righe
determinate dall'involucro creato. A meno che nel testo di input non vi
siano parole individuali più lunghe di width,
TextWrapper garantisce che non vengano mandate in output delle
righe più lunghe di width caratteri.
True
) Se vero, tutti i caratteri di
tabulazione nel testo verranno espansi in spazi, utilizzando il metodo
expand_tabs() di text.
True
) Se vero, ogni carattere di
spaziatura (come definito da string.whitespace
) rimanente dopo
l'espansione dei caratteri di tabulazione, verrà sostituito da un
singolo spazio.
Note:
Se expand_tabs è falso e replace_whitespace è
vero, ogni carattere di tabulazione verrà sostituito da un singolo
spazio, che non è la stessa cosa dell'espansione delle
tabulazioni.
''
) La stringa che viene preposta alla
prima riga dell'output realizzato. Viene inclusa nel conteggio della
lunghezza della prima riga.
''
) La stringa che viene preposta a tutte
le righe dell'output realizzato, ad eccezione della prima. Viene
inclusa nel conteggio della lunghezza di tutte le righe, ad eccezione
della prima.
False
) Se vero, TextWrapper tenta di
riconoscere la fine delle frasi, e si assicura che le frasi vengano
sempre separate da esattamente due spazi. Questo è in genere quanto si
desidera per del testo in un font monospaziato. Comunque, l'algoritmo
di riconoscimento è imperfetto: assume che la fine di ogni frase
consista di una lettera minuscola seguita da un carattere tra
".", "!" o "?", eventualmente seguito da
""" o "'", seguito da uno spazio. Un problema
tipico di questo algoritmo, è che non è in grado di riconoscere la
differenza tra ``Dr.'' in
[...] Dr. Frankenstein's monster [...]
e ``Spot.'' in
[...] See Spot. See Spot run [...]
Il valore predefinito di fix_sentence_endings è falso.
Poiché l'algoritmo di riconoscimento della frasi si affida a
string.lowercase
per la definizione di ``lettere minuscole'' e
utilizza la convenzione di utilizzare due spazi dopo un punto per
separare le frasi nella stessa riga, è specifico per i testi in
lingua inglese.
True
) Se vero, le parole più lunghe di
width verranno spezzate per assicurare che nessuna riga sia
più lunga di width. Se falso, le parole lunghe non verranno
spezzate, e alcune righe potranno risultare più lunghe di
width. (Le parole lunghe verranno poste in una riga a sè
stante, per minimizzare la quantità eccedente rispetto a width.)
TextWrapper fornisce anche due metodi pubblici, analoghi alle funzioni di convenienza a livello di modulo:
text) |
text) |