2.16 以指定列宽格式化字符串
最后更新于:2022-04-01 15:32:26
## 问题
你有一些长字符串,想以指定的列宽将它们重新格式化。
## 解决方案
使用 `textwrap` 模块来格式化字符串的输出。比如,假如你有下列的长字符串:
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."
下面演示使用 `textwrap` 格式化字符串的多种方式:
>>> import textwrap
>>> print(textwrap.fill(s, 70))
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.
>>> print(textwrap.fill(s, 40))
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.
>>> print(textwrap.fill(s, 40, initial_indent=' '))
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.
>>> print(textwrap.fill(s, 40, subsequent_indent=' '))
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.
## 讨论
`textwrap` 模块对于字符串打印是非常有用的,特别是当你希望输出自动匹配终端大小的时候。你可以使用 `os.get_terminal_size()` 方法来获取终端的大小尺寸。比如:
>>> import os
>>> os.get_terminal_size().columns
80
>>>
`fill()` 方法接受一些其他可选参数来控制tab,语句结尾等。参阅 [textwrap.TextWrapper文档](https://docs.python.org/3.3/library/textwrap.html#textwrap.TextWrapper) 获取更多内容。