textwrap
— Ombrytning och fyllning av text¶
Källkod: Lib/textwrap.py
Modulen textwrap
tillhandahåller några bekvämlighetsfunktioner samt TextWrapper
, den klass som gör allt arbete. Om du bara omsluter eller fyller en eller två textsträngar bör bekvämlighetsfunktionerna vara tillräckligt bra; annars bör du använda en instans av TextWrapper
för effektivitetens skull.
- textwrap.wrap(text, width=70, *, initial_indent='', subsequent_indent='', expand_tabs=True, replace_whitespace=True, fix_sentence_endings=False, break_long_words=True, drop_whitespace=True, break_on_hyphens=True, tabsize=8, max_lines=None, placeholder=' [...]')¶
Slår in det enskilda stycket i text (en sträng) så att varje rad är högst bredd tecken lång. Returnerar en lista med utdatarader, utan avslutande nya linjer.
Valfria nyckelordsargument motsvarar instansattributen för
TextWrapper
, som dokumenteras nedan.Se metoden
TextWrapper.wrap()
för mer information om hurwrap()
fungerar.
- textwrap.fill(text, width=70, *, initial_indent='', subsequent_indent='', expand_tabs=True, replace_whitespace=True, fix_sentence_endings=False, break_long_words=True, drop_whitespace=True, break_on_hyphens=True, tabsize=8, max_lines=None, placeholder=' [...]')¶
Omsluter det enskilda stycket i text och returnerar en enskild sträng som innehåller det omslutna stycket.
fill()
är en förkortning för"\n".join(wrap(text, ...))
I synnerhet accepterar
fill()
exakt samma nyckelordsargument somwrap()
.
- textwrap.shorten(text, width, *, fix_sentence_endings=False, break_long_words=True, break_on_hyphens=True, placeholder=' [...]')¶
Kollapsa och trunkera den givna texten så att den passar in i den givna bredden.
Först kollapsas blankstegen i text (alla blanksteg ersätts med enkla mellanslag). Om resultatet ryms inom bredden returneras det. Annars tas tillräckligt många ord bort från slutet så att de återstående orden plus platshållaren ryms inom bredd:
>>> textwrap.shorten("Hello world!", width=12) 'Hello world!' >>> textwrap.shorten("Hello world!", width=11) 'Hello [...]' >>> textwrap.shorten("Hello world", width=10, placeholder="...") 'Hello...'
Valfria nyckelordsargument motsvarar instansattributen för
TextWrapper
, som dokumenteras nedan. Observera att blanksteg kollapsar innan texten skickas tillTextWrapper
fill()
-funktionen, så att ändra värdet påtabsize
,expand_tabs
,drop_whitespace
ochreplace_whitespace
kommer inte att ha någon effekt.Tillagd i version 3.4.
- textwrap.dedent(text)¶
Ta bort alla vanliga inledande blanksteg från varje rad i text.
Detta kan användas för att få trippelciterade strängar att ligga i linje med vänsterkanten på skärmen, samtidigt som de fortfarande presenteras i källkoden i indragen form.
Observera att tabbar och mellanslag båda behandlas som blanksteg, men de är inte lika: raderna
" hello"
och"\thello"
anses inte ha något gemensamt ledande blanksteg.Rader som bara innehåller blanksteg ignoreras i inmatningen och normaliseras till ett enda nytt radtecken i utmatningen.
Till exempel:
def test(): # end first line with \ to avoid the empty line! s = '''\ hello world ''' print(repr(s)) # prints ' hello\n world\n ' print(repr(dedent(s))) # prints 'hello\n world\n'
- textwrap.indent(text, prefix, predicate=None)¶
Lägg till prefix i början av markerade rader i text.
Rader separeras genom att anropa
text.splitlines(True)
.Som standard läggs prefix till på alla rader som inte enbart består av blanksteg (inklusive eventuella radavslut).
Till exempel:
>>> s = 'hello\n\n \nworld' >>> indent(s, ' ') ' hello\n\n \n world'
Det valfria argumentet predicate kan användas för att styra vilka rader som ska vara indragna. Det är t.ex. enkelt att lägga till prefix även till tomma rader och rader med enbart blanksteg:
>>> print(indent(s, '+ ', lambda line: True)) + hello + + + world
Tillagd i version 3.3.
wrap()
, fill()
och shorten()
fungerar genom att skapa en TextWrapper
-instans och anropa en enda metod på den. Den instansen återanvänds inte, så för program som bearbetar många textsträngar med hjälp av wrap()
och/eller fill()
kan det vara effektivare att skapa ett eget TextWrapper
-objekt.
Texten bryts helst på blanksteg och direkt efter bindestrecken i ord med bindestreck; först därefter bryts långa ord vid behov, såvida inte TextWrapper.break_long_words
är satt till false.
- class textwrap.TextWrapper(**kwargs)¶
Konstruktorn för
TextWrapper
accepterar ett antal valfria nyckelordsargument. Varje nyckelordsargument motsvarar ett instansattribut, så till exempelwrapper = TextWrapper(initial_indent="* ")
är detsamma som
wrapper = TextWrapper() wrapper.initial_indent = "* "
Du kan återanvända samma
TextWrapper
-objekt många gånger, och du kan ändra alla dess alternativ genom direkt tilldelning till instansattribut mellan användningarna.Instansattributen för
TextWrapper
(och nyckelordsargument till konstruktören) är följande:- width¶
(standard:
70
) Den maximala längden på omslutna rader. Så länge det inte finns några enskilda ord i inmatningstexten som är längre änwidth
, garanterarTextWrapper
att ingen utmatningsrad kommer att vara längre änwidth
tecken.
- expand_tabs¶
(default:
True
) Om true, kommer alla tabbtecken i text att expanderas till mellanslag med hjälp avexpandtabs()
-metoden i text.
- tabsize¶
(default:
8
) Omexpand_tabs
är true kommer alla tabbtecken i text att expanderas till noll eller fler mellanslag, beroende på aktuell kolumn och angiven tabbstorlek.Tillagd i version 3.3.
- replace_whitespace¶
(default:
True
) Om true används kommer metodenwrap()
att ersätta varje blankstegstecken med ett enda mellanslag efter tabbexpansion men före ombrytning. De blankstegstecken som ersätts är följande: tabb, ny rad, vertikal tabb, formfeed och vagnsretur ('\t\n\v\f\r\
).Anteckning
Om
expand_tabs
är false ochreplace_whitespace
är true kommer varje tabbtecken att ersättas med ett mellanslag, vilket inte är samma sak som tabbexpansion.Anteckning
Om
replace_whitespace
är false kan nya linjer visas mitt på en rad och orsaka konstiga utdata. Av denna anledning bör text delas upp i stycken (medstr.splitlines()
eller liknande) som paketeras separat.
- drop_whitespace¶
(standard:
True
) Om true används, tas blanksteg i början och slutet av varje rad (efter ombrytning men före indragning) bort. Whitespace i början av stycket tas dock inte bort om det följs av icke-whitespace. Om det blanksteg som ska tas bort upptar en hel rad, tas hela raden bort.
- initial_indent¶
(standard:
''
) Sträng som läggs till på den första raden i den inplastade utdata. Räknas mot längden på den första raden. Den tomma strängen är inte indragen.
- subsequent_indent¶
(standard:
''
) Sträng som kommer att läggas till alla rader i den inplastade utdata utom den första. Räknar mot längden på varje rad utom den första.
- fix_sentence_endings¶
(default:
False
) Om true, försökerTextWrapper
upptäcka meningsavslutningar och se till att meningarna alltid är åtskilda av exakt två mellanslag. Detta är i allmänhet önskvärt för text i ett monospaced-teckensnitt. Meningsdetekteringsalgoritmen är dock ofullständig: den antar att en meningsslut består av en gemen bokstav följd av en av'.'
,'!'
eller'?'
, eventuellt följd av en av'"'
eller"'"
, följt av ett mellanslag. Ett problem med den här algoritmen är att den inte kan upptäcka skillnaden mellan ”Dr.” i[...] Dr Frankensteins monster [...]
och ”Spot.” i
[...] Se Spot. Se Spot springa [...]
fix_sentence_endings
är false som standard.Eftersom algoritmen för meningsdetektering bygger på
string.lowercase
för definitionen av ”gemen bokstav” och en konvention om att använda två mellanslag efter en punkt för att separera meningar på samma rad, är den specifik för engelskspråkiga texter.
- break_long_words¶
(default:
True
) Om true, kommer ord som är längre änwidth
att brytas för att säkerställa att inga rader är längre änwidth
. Om den är false kommer långa ord inte att brytas, och vissa rader kan vara längre änwidth
. (Långa ord kommer att placeras på en rad för sig för att minimera den mängd somwidth
överskrids med)
- break_on_hyphens¶
(default:
True
) Om true, kommer ombrytning att ske företrädesvis på blanksteg och direkt efter bindestreck i sammansatta ord, som det är brukligt på engelska. Om false, kommer endast blanksteg att betraktas som potentiellt bra platser för radbrytningar, men du måste ställa inbreak_long_words
till false om du vill ha riktigt osäkra ord. Standardbeteendet i tidigare versioner var att alltid tillåta brytning av ord med bindestreck.
- max_lines¶
(standard:
None
) Om inteNone
, kommer utdata att innehålla högst max_lines rader, med placeholder i slutet av utdata.Tillagd i version 3.4.
- placeholder¶
(standard:
' [...]'
) Sträng som visas i slutet av utdatatexten om den har avkortats.Tillagd i version 3.4.
TextWrapper
innehåller också några publika metoder, som motsvarar de praktiska funktionerna på modulnivå:- wrap(text)¶
Omsluter det enskilda stycket i text (en sträng) så att varje rad är högst
width
tecken lång. Alla ombrytningsalternativ hämtas från instansattributen i instansenTextWrapper
. Returnerar en lista med utdatarader, utan avslutande nya linjer. Om det omslutna utdatat inte har något innehåll är den returnerade listan tom.
- fill(text)¶
Omsluter ett stycke med text och returnerar en sträng som innehåller det omslutna stycket.