IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python:textwrap --文本自动换行与填充 -> 正文阅读

[Python知识库]python:textwrap --文本自动换行与填充

textwrap 模块提供了一些快捷函数,以及可以完成所有工作的类 TextWrapper。 如果你只是要对一两个文本字符串进行自动换行或填充,快捷函数应该就够用了;否则的话,你应该使用 TextWrapper 的实例来提高效率。

语法简介

textwrap模块提供的快捷函数如下:

wrap函数:

  • 对 text (字符串) 中的单独段落自动换行以使每行长度最多为 width 个字符。 返回由输出行组成的列表,行尾不带换行符。
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)

fill函数:

  • 对 text 中的单独段落自动换行,并返回一个包含被自动换行段落的单独字符串。
textwrap.fill(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)

shorten函数:

  • 折叠并截短给定的 text 以符合给定的 width。
textwrap.shorten(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)

dedent函数:

  • 移除 text 中每一行的任何相同前缀空白符。
textwrap.shorten(text)

indent函数:

  • 将 prefix 添加到 text 中选定行的开头。
  • 通过调用 text.splitlines(True) 来对行进行拆分。
  • 默认情况下,prefix 会被添加到所有不是只由空白符(包括任何行结束符)组成的行。
textwrap.indent(text,?prefix,?predicate=None)

参数说明:

  • width:(默认: 70) 自动换行的最大行长度。

  • expand_tabs:(默认: True) 如果为真值,则 text 中所有的制表符将使用 text 的 expandtabs() 方法扩展为空格符。

  • tabsize:(默认: 8) 如果 expand_tabs 为真值,则 text 中所有的制表符将扩展为零个或多个空格,具体取决于当前列位置和给定的制表宽度。

  • replace_whitespace:(默认: True) 如果为真值,在制表符扩展之后、自动换行之前,wrap() 方法将把每个空白字符都替换为单个空格。 会被替换的空白字符如下:制表,换行,垂直制表和回车 ('\t\n\v\r')。

  • drop_whitespace:(默认: True) 如果为真值,每一行开头和末尾的空白字符(在包装之后、缩进之前)会被丢弃。 但是段落开头的空白字符如果后面不带任何非空白字符则不会被丢弃。 如果被丢弃的空白字符占据了一个整行,则该整行将被丢弃。

  • initial_indent:(默认: ' ') 将被添加到被自动换行输出内容的第一行的字符串。 其长度会被计入第一行的长度。 空字符串不会被缩进。

  • subsequent_indent:(默认: ' ') 将被添加到被自动换行输出内容除第一行外的所有行的字符串。 其长度会被计入除行一行外的所有行的长度。

  • fix_sentence_endings:(默认: False) 如果为真值,TextWrapper 将尝试检测句子结尾并确保句子间总是以恰好两个空格符分隔。 对于使用等宽字体的文本来说通常都需要这样。

  • break_long_words:(默认: True) 如果为真值,则长度超过 width 的单词将被分开以保证行的长度不会超过 width。 如果为假值,超长单词不会被分开,因而某些行的长度可能会超过 width。 (

  • break_on_hyphens:(默认: True) 如果为真值,将根据英语的惯例首选在空白符和复合词的连字符之后自动换行。 如果为假值,则只有空白符会被视为合适的潜在断行位置,但如果你确实不希望出现分开的单词则你必须将
    break_long_words 设为假值。

  • max_lines:(默认: None) 如果不为 None,则输出内容将最多包含 max_lines 行,并使 placeholder 出现在输出内容的末尾。

  • placeholder:(默认: ' […]') 该文本将在输出文本被截短时出现在文本末尾。

示例展示

wrap函数的示例如下:

import?textwrap

str_data?=?"""
??哈哈\t哈啊哈哈\t啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海???不会发生代表/n会尽快发货时.?electroencephalography?
"""
print(str_data)
print(textwrap.wrap(str_data,?width=5))
print(textwrap.wrap(str_data,?initial_indent='&&'))
print(textwrap.wrap(str_data,?subsequent_indent='10'))
print(textwrap.wrap(str_data,?expand_tabs=False))
print(textwrap.wrap(str_data,?tabsize=5))
print(textwrap.wrap(str_data,?width=5,?replace_whitespace=False))
print(textwrap.wrap(str_data,?width=5,?fix_sentence_endings=True))
print(textwrap.wrap(str_data,?width=5,?break_long_words=False))
print(textwrap.wrap(str_data,?width=5,?break_on_hyphens=True))
print(textwrap.wrap(str_data,?width=5,?drop_whitespace=True))
print(textwrap.wrap(str_data,?width=5,?max_lines=1,?placeholder='》》》》》'))

运行结果

??哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海???不会发生代表/n会尽快发货时.?electroencephalography?

['???哈哈',?'哈啊哈哈',?'啊哈哈哈啊',?'哈哈哈',?'怀旧服',?'翻山倒海',?'不会发生代',?'表/n会尽',?'快发货时.',?'?elec',?'troen',?'cepha',?'logra',?'phy']
['&&???哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海',?'不会发生代表/n会尽快发货时.?electroencephalography']
['???哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海',?'10不会发生代表/n会尽快发货时.?electroencephalography']
['???哈哈?哈啊哈哈?啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海',?'不会发生代表/n会尽快发货时.?electroencephalography']
['???哈哈?哈啊哈哈?啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海',?'不会发生代表/n会尽快发货时.?electroencephalography']
['\n??哈哈',?'哈啊哈哈',?'啊哈哈哈啊',?'哈哈哈',?'怀旧服',?'翻山倒海',?'不会发生代',?'表/n会尽',?'快发货时.',?'?elec',?'troen',?'cepha',?'logra',?'phy']
['???哈哈',?'哈啊哈哈',?'啊哈哈哈啊',?'哈哈哈',?'怀旧服',?'翻山倒海',?'不会发生代',?'表/n会尽',?'快发货时.',?'?elec',?'troen',?'cepha',?'logra',?'phy']
['???哈哈',?'哈啊哈哈',?'啊哈哈哈啊哈哈哈',?'怀旧服',?'翻山倒海',?'不会发生代表/n会尽快发货时.?electroencephalography']
['???哈哈',?'哈啊哈哈',?'啊哈哈哈啊',?'哈哈哈',?'怀旧服',?'翻山倒海',?'不会发生代',?'表/n会尽',?'快发货时.',?'?elec',?'troen',?'cepha',?'logra',?'phy']
['???哈哈',?'哈啊哈哈',?'啊哈哈哈啊',?'哈哈哈',?'怀旧服',?'翻山倒海',?'不会发生代',?'表/n会尽',?'快发货时.',?'?elec',?'troen',?'cepha',?'logra',?'phy']
['》》》》》']

Process?finished?with?exit?code?0

fill函数的示例如下:

  • fill函数和wrap函数都是共用TextWrapper类实现的,两个函数唯一的区别就是,wrap函数返回的是列表类型,fill函数返回的是字符串类型

shorten函数的示例如下:

  • shorten函数和fill函数、wrap函数的区别就是它的width参数是必传的,最后返回的都是折叠的数据
import?textwrap

str_data?=?"""
??哈哈\t哈啊哈哈\t啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海???不会发生代表/n会尽快发货时.?electroencephalography?
"""
print(str_data)
print(textwrap.shorten(str_data,?width=5))
print(textwrap.shorten(str_data,?width=10,?initial_indent='&&'))
print(textwrap.shorten(str_data,?width=5,?subsequent_indent='10'))
print(textwrap.shorten(str_data,?width=5,?expand_tabs=False))
print(textwrap.shorten(str_data,?width=5,?tabsize=5))
print(textwrap.shorten(str_data,?width=5,?replace_whitespace=False))
print(textwrap.shorten(str_data,?width=5,?fix_sentence_endings=True))
print(textwrap.shorten(str_data,?width=5,?break_long_words=False))
print(textwrap.shorten(str_data,?width=5,?break_on_hyphens=True))
print(textwrap.shorten(str_data,?width=5,?drop_whitespace=True))
print(textwrap.shorten(str_data,?width=5,?placeholder='...'))

运行结果

??哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海???不会发生代表/n会尽快发货时.?electroencephalography?

[...]
&&哈哈?[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
哈哈...

Process?finished?with?exit?code?0

dedent函数的示例如下:

  • 移除 text 中每一行的任何相同前缀空白符
import?textwrap

str_data?=?"""
??哈哈\t哈啊哈哈\t啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海???不会发生代表/n会尽快发货时.?electroencephalography?
"""
print(str_data)
print(textwrap.dedent(str_data))

运行结果

??哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海???不会发生代表/n会尽快发货时.?electroencephalography?


哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈???????怀旧服?????????翻山倒海???不会发生代表/n会尽快发货时.?electroencephalography?

dedent函数的示例如下:

  • 将 prefix 添加到 text 中选定行的开头
import?textwrap

str_data?=?"""
/n/n哈哈\t哈啊哈哈\t啊哈哈哈啊哈哈哈怀旧服翻山倒海不会发生代表/n会尽快发货时.?electroencephalography?
"""
print(str_data)
print(textwrap.indent(str_data,?prefix='????'))

运行结果

/n/n哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈怀旧服翻山倒海不会发生代表/n会尽快发货时.?electroencephalography?


????/n/n哈哈????哈啊哈哈????啊哈哈哈啊哈哈哈怀旧服翻山倒海不会发生代表/n会尽快发货时.?electroencephalography?


Process?finished?with?exit?code?0
  • 可选的 predicate 参数可用来控制哪些行要缩进。 例如,可以很容易地为空行或只有空白符的行添加 prefix:
import?textwrap

str_data?=?"""
哈哈哈啊\n哈哈啊哈哈哈\n啊哈哈哈怀旧服\n翻山\n倒海不会发生代表\n会尽快发货时.?electroencephalography?
"""
print(str_data)
print("_"?*?50)
print(textwrap.indent(str_data,?'?+'))
print("_"?*?50)
print(textwrap.indent(str_data,?'?+',?lambda?line:?True))

运行结果

哈哈哈啊
哈哈啊哈哈哈
啊哈哈哈怀旧服
翻山
倒海不会发生代表
会尽快发货时.?electroencephalography?

__________________________________________________

?+哈哈哈啊
?+哈哈啊哈哈哈
?+啊哈哈哈怀旧服
?+翻山
?+倒海不会发生代表
?+会尽快发货时.?electroencephalography?

__________________________________________________
?+
?+哈哈哈啊
?+哈哈啊哈哈哈
?+啊哈哈哈怀旧服
?+翻山
?+倒海不会发生代表
?+会尽快发货时.?electroencephalography?


Process?finished?with?exit?code?0

以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!

未完,待续…

一直都在努力,希望您也是!

微信搜索公众号:就用python

文章作者:李 锋|编辑排版:梁莉莉

更多内容欢迎关注公众号

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:15:03  更:2021-12-15 18:17:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:49:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码