目录
0x21 textwrap.wrap(text, width)
0x22 textwrap.fill(text, width)
0x23 textwrap.indent(text, prefix, predicate=None)
0x25 textwrap.shorten(text, width, **kwargs)
0x00 背景
文本包装(Text Wrapping)是一种文本处理技术,用于将长文本行分割成适合特定输出宽度的短文本行,以便在显示或打印文本时更好地适应输出设备的宽度。这个过程通常用于控制文本在终端、文本框、报表或其他输出媒介上的布局,以确保文本在不超出指定宽度的情况下可读性良好。
0x01 常见场景文本包装场景
- 输出宽度:文本包装通常需要指定输出设备或输出容器的宽度,以便根据此宽度来分割文本。
- 换行字符:通常使用换行符(例如
\n
)来表示文本中的换行。文本包装会识别这些换行符,并根据输出宽度来确定何时进行换行。 - 单词边界:在分割文本时,文本包装通常会尽量在单词的边界处进行分割,以确保不会将单词分割成两部分。这有助于提高文本的可读性。
0x10 TextWrap介绍
textwrap 模块是 Python 标准库中用于执行文本包装的工具之一。它提供了一组函数和类,可以根据指定的宽度自动分割文本,并可选地进行缩进、对齐等格式设置,以适应不同的输出需求。
0x20 TextWrap使用示例
0x21 textwrap.wrap(text, width)
-
作用:将文本
text
按照给定的width
宽度进行分割,并返回一个列表,列表中的每个元素都是分割后的文本行。 -
示例
import textwrap text = "This is a long text that needs to be wrapped to fit within a certain width." wrapped_text = textwrap.wrap(text, width=30) for line in wrapped_text: print(line) >>> 输出结果 This is a long text that needs to be wrapped to fit within a certain width.
0x22 textwrap.fill(text, width)
-
作用:将文本
text
按照给定的width
宽度进行分割,并返回一个字符串,其中文本行已经被换行符\\n
连接起来,以适应指定宽度。 -
示例
import textwrap text = "This is a long text that needs to be wrapped to fit within a certain width." wrapped_text = textwrap.fill(text, width=30) print(wrapped_text) >>> 输出结果 This is a long text that needs to be wrapped to fit within a certain width.
0x23 textwrap.indent(text, prefix, predicate=None)
-
作用:为文本中的每一行添加指定的前缀
prefix
,可以根据predicate
函数来选择哪些行需要添加前缀。 -
示例
import textwrap text = "This is\\na long\\ntext that\\nneeds to\\nbe wrapped." indented_text = textwrap.indent(text, " ") # 添加两个空格的前缀 print(indented_text) >>> 输出结果 This is a long text that needs to be wrapped.
0x24 textwrap.dedent(text)
- 作用:自动删除文本中的缩进,通常用于处理多行字符串的缩进。
-
示例
import textwrap text = """ This is an example of dedenting text in Python. """ dedented_text = textwrap.dedent(text) print(dedented_text) >>> 输出结果 This is an example of dedenting text in Python.
0x25 textwrap.shorten(text, width, **kwargs)
- 作用:用于缩短文本,并可以选择性地添加省略号(ellipsis)以表示文本被截断
- 示例
import textwrap text = "This is a long piece of text that needs to be shortened to fit within a certain width." shortened_text = textwrap.shorten(text, width=40, placeholder="...") print(shortened_text) >>> 输出结果 This is a long piece of text that...