Python textwrap库详解:文本填充、缩进、去缩进与截断

陆景行
陆景行
发布时间:2026-10-12| 2人浏览过
原创

本文深入解析Python标准库textwrap,涵盖文本填充、缩进控制、去缩进及截断四大核心功能。通过fill、indent、dedent和shorten等方法的实际代码示例,展示如何高效处理多行文本的排版、对齐与截取,适用于日志打印、文档生成及前端展示等场景。

一、前言

此前的内容主要聚焦于基础字符串数据的处理。本文将介绍专门用于处理多文本段落的textwrap库。该库提供了对段落缩进、文本填充以及内容截取等操作的支持,能够简化复杂文本格式的处理流程。

在开发自定义打印程序时,利用该库校正文档格式十分便捷,能显著提升文本格式处理的效率。接下来,我们将逐步深入探讨textwrap库的具体用法。

二、切割文档

通常,英文文档在不考虑手动换行的情况下,默认会一直填充当前行直到达到最大宽度才切换至下一行。若我们需要强制规定每行必须且仅包含50个字符,应如何处理?

可以使用textwrap.fill方法来实现,具体代码示例如下:

import textwrap

content = ""
with open('英文文档.txt', 'r', encoding='utf-8') as f:
    content = f.read()
print(content)
print("----")
print(textwrap.fill(content, width=50))

运行代码后,分割线下方展示了经textwrap.fill处理后的文档效果:

读者可自行测试验证,确保每行字符数(含空格)不超过50个,且未出现意外的缩进效果。

三、文本缩进

既然textwrap.fill无法直接实现文档缩进,接下来我们将介绍另一个函数:textwrap.indent()。

import textwrap

content = ""
with open('英文文档.txt', 'r', encoding='utf-8') as f:
    content = f.read()
print(textwrap.indent(content,"  "))

textwrap.indent()函数接收两个参数:待缩进的字符串以及用于缩进的字符序列。例如,若指定缩进字符为两个空格,则字符串的每一行前都会自动添加两个空格的缩进。

此外,我们还可以针对特定行应用缩进。textwrap.indent()函数支持第三个参数predicate,通过传入一个判断方法可设置特定规则。具体代码如下:

import textwrap

def choice_line(line):
    return len(line) % 2 == 0

content = ""
with open('英文文档.txt', 'r', encoding='utf-8') as f:
    content = f.read()
indent_str = textwrap.indent(content, "  ",predicate=choice_line)
print(indent_str)

在此示例中,设定的规则为:当某行字符串长度除以2的余数为0时,该行进行缩进;否则不缩进。运行后的效果如下:

四、文本去缩进

既然存在添加缩进的功能,自然也有反向操作,即去除缩进。下面通过textwrap.dedent()函数来演示如何去除文本缩进。

import textwrap

content = ""
with open('英文文档.txt', 'r', encoding='utf-8') as f:
    content = f.read()
indent_str = textwrap.indent(content, "  ")
print(textwrap.dedent(indent_str))

textwrap.dedent()函数仅需传入需要操作的文本作为参数,运行效果如下:

通过上述步骤,我们成功实现了文本缩进的去除。

五、截断文本

除了缩进处理,textwrap库还提供了文本截断功能。例如,许多资讯类App的文章简介常显示为“某某内容……”的形式,这正是截取文本开头部分的结果。textwrap.shorten函数可以完整实现这一功能,且能智能处理英文单词,避免截断在单词中间。

import textwrap

content = ""
with open('英文文档.txt', 'r', encoding='utf-8') as f:
    content = f.read()
print(textwrap.shorten(content, 100))

运行后的效果如下:

至此,关于Python格式化文本段落之textwrap库的介绍便告一段落。如需了解更多Python textwrap库的相关内容,欢迎查阅本站过往文章或继续浏览后续文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。