- 快捷函数
- **TextWrapper**类
textwrap中有5个常用函数,其基本功能如下
| 等价形式 | ||
|---|---|---|
| wrap | 将字符串拆分为字符串数组 | |
| fill | 将字符串进行分段 | 'n'.join(wrap(...)) |
| shorten | 将字符串截短 | |
| indent | 添加前缀 | |
| dedent | 删除空格前缀 |
>>> from textwrap import * >>> from string import ascii_letters as letters >>> test = letters*3 >>> wrap(test,width=30) ['abcdefghijklmnopqrstuvwxyzABCD', 'EFGHIJKLMNOPQRSTUVWXYZabcdefgh', 'ijklmnopqrstuvwxyzABCDEFGHIJKL', 'MNOPQRSTUVWXYZ'] >>> fill(test,width=30) #注意字符串中多了一些n 'abcdefghijklmnopqrstuvwxyzABCDnEFGHIJKLMNOPQRSTUVWXYZabcdefghnijklmnopqrstuvwxyzABCDEFGHIJKLnMNOPQRSTUVWXYZ' >>> >>> test_i = indent(fill(test,width=30),' ') #在每行前面添加前缀 >>> print(test_i) #每行前多了个空格 abcdefghijklmnopqrstuvwxyzABCD EFGHIJKLMNOPQRSTUVWXYZabcdefgh ijklmnopqrstuvwxyzABCDEFGHIJKL MNOPQRSTUVWXYZ >>> dedent(test_i) #删除每行前的空格前缀 'abcdefghijklmnopqrstuvwxyzABCDnEFGHIJKLMNOPQRSTUVWXYZabcdefghnijklmnopqrstuvwxyzABCDEFGHIJKLnMNOPQRSTUVWXYZ' >>> shorten(test_i,width=50) #按照给定长度和空格等进行字符串截取,对于被截取部分,用[...]表示 'abcdefghijklmnopqrstuvwxyzABCD [...]'TextWrapper类
快捷函数中其实有很多可选参数,例如wrap:
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)
查看源代码可以发现,快捷函数wrap在实现过程中,新建了一个TextWrapper类的实例,然后调用了这个实例中的wrap函数。
def wrap(text, width=70, **kwargs):
w = TextWrapper(width=width, **kwargs)
return w.wrap(text)
若想深入理解这些快捷函数,就需要理解TextWrapper中成员变量的含义
| 变量 | 默认值 | (为True时)说明 |
|---|---|---|
| width | - | 自动换行的最大长度 |
| initial_indent | '' | |
| subsequent_indent | '' | |
| expand_tabs | True | 制表符将通过expandtabs()扩展为空格 |
| tabsize | 8 | 制表符扩展为的空格个数 |
| replace_whitespace | True | 把'tnvfr'这些空白字符替换为空格 |
| drop_whitespace | True | 去掉开头结尾的空格 |
| fix_sentence_endings | False | 为True时,令两个句子之间空两格。 句子检测方法:结尾是小写字母加字符.?中的一个,并可能带有单双引号。 |
| break_long_words | True | 长度超过width的单词将被分开 |
| break_on_hyphens | True | 在空白符和复合词的连字符之后自动换行 |
| max_lines | None | 输出内容最多包含的行数 |
| placeholder | [...] | 文本被截断时表示省略的文本 |



