【python cookbook】【字符串与文本】16.以固定的列数重新格式化文本

时间:2021-05-12 23:40:38

问题:重新格式化一些很长的字符串,以指定的列数来显示

解决方案:textwrap模块的fill()方法来实现

# A long string
s = "Look into my eyes, look into my eyes, the eyes, the eyes, \
the eyes, not around the eyes, don't look around the eyes, \
look into my eyes, you're under." import textwrap print(textwrap.fill(s, 70))
print() print(textwrap.fill(s, 40))
print() print(textwrap.fill(s, 40, initial_indent=' ')) #initial_indent:在第一行的行首添加指定的字符显示。默认是空白。如果首行是空白行就不会添加。print() print(textwrap.fill(s, 40, subsequent_indent=' ')) #subsequent_indent:除了第一行,所有其它行都在行首添加这个字符串的输出。默认为空。
print()
>>> ================================ RESTART ================================
>>>
Look into my eyes, look into my eyes, the eyes, the eyes, the eyes,
not around the eyes, don't look around the eyes, look into my eyes,
you're under. Look into my eyes, look into my eyes,
the eyes, the eyes, the eyes, not around
the eyes, don't look around the eyes,
look into my eyes, you're under. Look into my eyes, look into my
eyes, the eyes, the eyes, the eyes, not
around the eyes, don't look around the
eyes, look into my eyes, you're under. Look into my eyes, look into my eyes,
the eyes, the eyes, the eyes, not
around the eyes, don't look around
the eyes, look into my eyes, you're
under. >>>

关于终端的尺寸大小,可以通过os.get_terminal_size()来获取:

>>> import os
>>> os.get_terminal_size().columns
80

fill()方法还有其他的额外的选项可以用来控制制表符、句号等,请参阅textwrap.TextWrapper类的文档  https://docs.python.org/3.3/library/textwrap.html#textwrap.TextWrapper