python模块学习- textwrap 文本包装和填充
TextWrap提供函数wrap()和fill(),以及TextWrapper类,工具函数dedent().通常包装或者填充一两个字符串使用wrap()和fill()。其他情况使用TextWrapper更高效。
textwrap.wrap(text[,width[, ...]])
包装单个段落(text为输入,系字符串),每行最长宽度width。返回输出行的列表,最后行无换行符。Width默认70。
textwrap.fill(text[,width[, ...]])
包装单段文字,并返回包含包裹段落的字符串。实际上是"\n".join(wrap(text,...))的缩写。wrap() andfill()创建TextWrapper实例,并调用一个方法。这些实例不被重用,所以包装/填充很多文本字符串要构造自己的TextWrapper对象更有效。TextWrapper.break_long_words设置是否拆长单词。
textwrap.dedent(text)
反缩进去除每行行首的空白。这方便显示三引号中的内容而不修改其源代码中的缩进。
代码实例:
sample_text = '''
The textwrap module can beusedto format text for output in
situationswherepretty-printing is desired. It offers
programmaticfunctionalitysimilar to the paragraph wrapping
or filling features foundinmany text editors.
'''
段落填充:
1
2
3
4
5
|
import
textwrap
from
textwrap_exampleimportsample_text
print
'Nodedent:\n'
printtextwrap.fill(sample_text, width
=
50
)
|
执行结果:
# pythontextwrap_fill.py
No dedent:
The textwrap module can beused to format
text for outputin situationswhere pretty-
printing is desired. It offers programmatic
functionalitysimilar to the paragraph wrapping
or fillingfeatures found in many text editors.
结果为左对齐,第一行有缩进。行中的空格继续保留。
移除缩进:
1
2
3
4
5
6
|
import
textwrap
fromtextwrap_example
import
sample_text
dedented_text
=
textwrap.dedent(sample_text)
print
'Dedented:'
printdedented_text
|
执行结果:
# pythontextwrap_dedent.py
Dedented:
The textwrapmodule can be used to format text for output in
situations wherepretty-printing is desired. Itoffers
programmaticfunctionality similar to the paragraph wrapping
or fillingfeatures found in many text editors.
这样第一行就不会缩进。
结合移除缩进和填充:
1
2
3
4
5
6
7
8
|
import
textwrap
fromtextwrap_example
import
sample_text
dedented_text
=
textwrap.dedent(sample_text).strip()
for
width
in
[
45
,
70
]:
print
'%dColumns:\n'
%
width
print
textwrap.fill(dedented_text,width
=
width)
print
|
执行结果:
# pythontextwrap_fill_width.py
45 Columns:
The textwrapmodule can be used to format
text for output insituations where pretty-
printing isdesired. It offers programmatic
functionalitysimilar to the paragraph
wrapping orfilling features found in many
text editors.
70 Columns:
The textwrapmodule can be used to format text for output in
situations wherepretty-printing is desired. Itoffersprogrammatic
functionality similarto the paragraph wrapping or fillingfeatures
found in many texteditors.
悬挂缩进:悬挂缩进第一行的缩进小于其他行的缩进。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import
textwrap
fromtextwrap_example
import
sample_text
dedented_text
=
textwrap.dedent(sample_text).strip()
printtextwrap.fill(dedented_text,
initial_indent
=
'',
subsequent_indent
=
''
*
4
,
width
=
50
,
)
执行结果:
# pythontextwrap_hanging_indent.py
The textwrapmodule can be usedto
format
text
for
output
in
situationswhere pretty
-
printingis
desired.It offers programmatic functionality
similarto the paragraph wrapping orfilling
featuresfound
in
manytext editors.
|
其中的’’*4还可以使用其他字符代替。