「文本处理」Python让文本内容美观易读,textwrap模块的使用

在日常的编程中,我们经常需要对文本内容进行处理,而Python提供了强大的textwrap模块来辅助我们进行文本的格式化处理。

textwrap模块可以根据指定的宽度,对文本进行分行展示,可以让文本更加美观易读。下面我们来详细了解一下textwrap模块的使用。#python标准库#


【资料图】

一、基础讲解

textwrap模块是Python标准库中的一个文本处理模块,用于对字符串进行格式化操作,更好的展示文本。textwrap模块主要包含以下几个函数:

textwrap.wrap(text, width, **kwargs)

该函数可以将一个长字符串根据指定宽度分成多行,返回一个列表,其中每个元素都是一个分行后的文本段落。它有三个参数:text表示要被格式化处理的字符串或文本,width表示每行的最大宽度,**kwargs表示其他关键字参数,如下文中的相关参数。

textwrap.fill(text, width, **kwargs)

该函数可以将一个长字符串根据指定宽度分成多行,将它们组合在一起形成一个新的字符串,返回新的字符串。它同样有三个参数:text表示要被格式化处理的字符串或文本,width表示每行的最大宽度,**kwargs表示其他关键字参数。

textwrap.indent(text, prefix, predicate=None)

该函数可以为文本的每一行添加一些前缀,实现文本缩进的功能。它有三个参数:text表示要被格式化处理的字符串或文本,prefix表示要添加的前缀字符串,predicate表示一个可选的回调函数,用于判断是否需要为该行添加前缀。

textwrap.shorten(text, width, **kwargs)

该函数可以将一个长字符串根据指定宽度截取为一个更短的字符串,返回新的字符串。它有三个参数:text表示要被格式化处理的字符串或文本,width表示截取后的最大宽度,**kwargs表示其他关键字参数。

textwrap.dedent(text)

该函数可以去除文本中所有行前面的空白符,这会生成更好的效果。如果一个文本输出中混合了制表符和额外的空格,格式一般不会美观。dedent(去除缩进)和indent(缩进)正好相反,所以结果将得到一个文本块,其中每一行的空白符已经删除。如果一行比另一行缩进更多,有些空白符则不会被完全删除。

其他函数

textwrap模块还提供了一些其他的函数,如wrap_always()、TextWrapper()等,这里不再一一列举。

二、实例代码

下面我们通过一些实例代码来看一看如何使用textwrap模块。

1. 分行展示文本

在进行参数配置、文本说明等操作时,我们经常需要对文本进行分行展示,textwrap.wrap()函数可以帮助我们实现这一功能。代码如下:

import textwraptext = """Python is a widely used high-level, general-purpose, interpreted, dynamic programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java."""# 将text分成每行宽度为20的段落wrapped_text = textwrap.wrap(text, width=20)# 输出每个段落for t in wrapped_text:print(t)

输出结果如下:Python is a widelyused high-level,general-purpose,interpreted, dynamicprogramming language.Its design philosophyemphasizes codereadability, and itssyntax allowsprogrammers to expressconcepts in fewer linesof code than would bepossible in languagessuch as C++ or Java.

程序运行效果如图:

2. 将文本缩进

在对文本进行排版时,我们通常需要在每行开头添加一些特定的前缀,如“>”、“-”等。textwrap.indent()函数可以帮助我们实现这一功能。代码如下:

import textwraptext = """Python is a widely used high-level, general-purpose, interpreted, dynamic programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java."""# 将text缩进,并在每行开头添加“>”号indented_text = textwrap.indent(text, ">")# 输出缩进后的文本print(indented_text)

输出结果如下:

>Python is a widely used high-level, general-purpose, interpreted, >dynamic programming language. Its design philosophy emphasizes >code readability, and its syntax allows programmers to express >concepts in fewer lines of code than would be possible in >languages such as C++ or Java.

效果如图:

3. 对长文本进行截取

在进行文本展示的时候,有时需要截取较长的文本,使其适应指定的宽度。textwrap.shoten()函数可以帮助我们实现这一功能。代码如下:

import textwraptext = """Python is a widely used high-level, general-purpose, interpreted, dynamic programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java."""# 对text进行截取,使其长度不超过50个字符shortened_text = textwrap.shorten(text, width=50, placeholder="...")# 输出截取后的文本print(shortened_text)

输出结果如下:

Python is a widely used high-level, general-purpose,...

运行效果如下图:

三、案例应用

下面我们通过一个小例子,来看一看textwrap模块是如何应用在现实生活中的。

假设我们已经读取到一个长篇的小说(比如,这里我们在网上下载了《红楼梦》第一回,保存为“novel.txt”)。

现在需要将小说内容按照指定的宽度进行排版展示,并在每段开头添加一些缩进和前缀。我们可以通过textwrap模块轻松地实现这个需求。代码如下:

import textwrap# 读取小说内容with open("novel.txt", mode="r", encoding="utf8") as f:novel_content = f.read()# 对小说内容进行分段格式化处理wrapped_novel = []for paragraph in novel_content.split("\n"):# 对每段文字进行格式化处理wrapped_parag = textwrap.wrap(paragraph, width=60, replace_whitespace=False)# 如果该段落不是空的,则添加前缀和缩进,并加入新的列表if wrapped_parag:wrapped_novel.append(textwrap.indent(wrapped_parag[0], ">>") + "\n")wrapped_novel += [textwrap.indent(parag, ">") + "\n" for parag in wrapped_parag[1:]]# 否则直接添加至列表else:wrapped_novel.append("\n")# 输出格式化后的小说内容print("".join(wrapped_novel))

此时,我们将一本小说成功地进行了排版,并按照指定的格式展示出来了。我们看下效果。

怎么样,是不是比较美观了?

四、总结提高

textwrap模块是Python中的一个强大的文本处理模块,可以帮助我们对字符串进行格式化处理,更加容易地展示文本内容。本文主要介绍了textwrap模块的基本函数及使用方法,并通过实例代码及案例应用对其进行深入了解。

在实际应用中,我们需要根据实际需求来灵活运用textwrap模块,进一步提高我们的编程效率。

想了解更多精彩内容,快来关注python高手养成

关键词:

为您推荐

「文本处理」Python让文本内容美观易读,textwrap模块的使用

在日常的编程中,我们经常需要对文本内容进行处理,而Python提供了强大的textwrap模块来辅助我们进行文本的格式化处理。textwrap模块可以根据指定的

来源:python高手养成2023-04-10

当前视讯!禄劝紫藤花开美如画

日前,禄劝县转龙镇平安福景区内的3000余株紫藤次第开放,绵延5公里的紫藤长廊让游客感受到紫藤花的唯美与烂漫。

来源:昆明日报2023-04-10

世界动态:山西七彩龙油墨股份有限公司

1、山西七彩龙油墨股份有限公司于2003年07月29日成立。2、法定代表人杨国栋,公司经营范围包括:批发(无仓储):

来源:互联网2023-04-10

妻子离婚坐地起价(二) 快消息

胡某之前找到了很多律师进行咨询,得到的答案都是,他和刘某已经是夫妻关系了,所以在结婚期间,胡某投资的多处房产就要作为夫妻

来源:法务网2023-04-10

“量身定价”助推“点绿成金”

抚州市局深度融入生态产品价值实现“量身定价”助推“点绿成金”3月10日,走进江西省抚州市南丰县洽湾镇上店村千亩“稻油轮作”基地,早播早稻

来源:东方资讯2023-04-10

滚动:【私募调研记录】涌津投资调研成都先导

根据市场公开信息及4月7日披露的机构调研信息,知名私募涌津投资近期对1家上市公司进行了调研,相关名单如下:1)成都先导(证券之星综合指标

来源:证券之星2023-04-10

当前报道:衡泰技术业绩升2022净现比0.18 2021毛利率升背离同行

衡泰技术业绩升2022净现比0 182021毛利率升背离同行

来源:中国经济网2023-04-10

天天观焦点:法国马赛一座住宅楼倒塌,废墟中或有四至十几人被埋

原标题:法内政部长:马赛建筑物倒塌废墟中可能仍有多人被埋当地时间9日凌晨,法国马赛市一栋四层建筑物倒塌,同时伴有火灾。马赛市长称,至少

来源:央视新闻2023-04-10