【Python标准库textwrap】对段落文本进行格式化

【Python标准库textwrap】对段落文本进行格式化,第1张

【Python标准库textwrap】对段落文本进行格式化

文章目录
    • 快捷函数
    • **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_tabsTrue制表符将通过expandtabs()扩展为空格tabsize8制表符扩展为的空格个数replace_whitespaceTrue把'tnvfr'这些空白字符替换为空格drop_whitespaceTrue去掉开头结尾的空格fix_sentence_endingsFalse为True时,令两个句子之间空两格。
句子检测方法:结尾是小写字母加字符.?中的一个,并可能带有单双引号。break_long_wordsTrue长度超过width的单词将被分开break_on_hyphensTrue在空白符和复合词的连字符之后自动换行max_linesNone输出内容最多包含的行数placeholder[...]文本被截断时表示省略的文本

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5592998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存