前情提示: 测试代码中,右尖括号(>
)表示命令行中输入的命令; 单独一行并以井字符(#
)开头的为输出结构; 库的导入仅在本文的第一个测试代码中展现,其他代码块均省略库的导入代码。
- 系统类型:
Windows 10
- python 版本:
Python 3.9.0
textwrap
可以将文本字符串按照一定的规则换行,或在对文本字符串进行一些简单的处理。
textwrap
模块提供了一些快捷函数,通常情况下这些快捷函数就足够满足需求,如果无与需求相符的快捷函数,还可以自定义 TextWrapper
类来满足需求。
快捷函数
textwrap.wrap(text, width=70, **kwargs)
自动换行并以列表类型返回
参数:
text: str,要处理的字符串
width: int,默认为 70,每行字符最大数量
**kwargs: 可选参数,与 TextWrapper 实例中的参数相同
返回值:
list[str, str, str, ...],包含一个或多个 str 类型子元素的列表
对 text
以每行 width
个字符自动换行,所有行组成列表返回,行尾不带换行符。
import textwrap
s1 = 'abcdefghijklmnopqrstuvwxyz'
print(textwrap.wrap(s1, 7))
# ['abcdefg', 'hijklmn', 'opqrstu', 'vwxyz']
s11 = 'ab\ncd efghijklmnop'
print(textwrap.wrap(s11, 10))
# ['ab cd e', 'fghijklmno', 'p']
对于表示换行的特殊字符 \n
被转换成空格,转换后的空格被当作了一个字符来处理。 那么就来测试测试所有转义字符:
s11 = 'start\a\b\f\n\r\t\v\\\'\"\0end'
print(textwrap.fill(s11, 30))
# ['start\x07\x08 \\\'"\x00end']
\a
,\b
&#x