栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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[...]文本被截断时表示省略的文本
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/587608.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号