textwrap 是 Python 標(biāo)準(zhǔn)庫中的一個實用模塊,專門用于將文本按指定寬度進(jìn)行換行(折行)或縮進(jìn),適用于命令行輸出、美化打印文本、自動生成 Markdown、HTML 或報告格式內(nèi)容等場景。
常見應(yīng)用場景:
(1)自動將一段長文本格式化為每行固定寬度。
(2)添加統(tǒng)一的縮進(jìn),用于代碼或段落排版。
(3)去除文本中的多余縮進(jìn)(常用于文檔處理)。
(4)處理輸出到終端的幫助信息、說明文字等。
◆◆ ◆
核心概念
1、折行(wrap)
將長文本按指定寬度分行。
2、填充(fill)
將折行后的多行文本組合為一個字符串(通常用于打印)。
3、縮進(jìn)(indent/dedent)
增加或移除文本的統(tǒng)一縮進(jìn)。
4、占位符替換(shorten)
將超長文本截斷為摘要,并用占位符(如 ...)結(jié)尾。
◆◆ ◆
應(yīng)用舉例
例 1: 基本文本折行
import textwrap
text = "Python 是一門優(yōu)雅而強大的編程語言,廣泛應(yīng)用于數(shù)據(jù)分析、自動化、人工智能等領(lǐng)域。"
wrapped = textwrap.wrap(text, width=20)
print(wrapped)
# 輸出:
# ['Python 是一門優(yōu)雅而強大', '的編程語言,廣泛應(yīng)用', '于數(shù)據(jù)分析、自動化、', '人工智能等領(lǐng)域。']例 2:填充文本(常用于終端輸出)
import textwrap
text = "Python supports multiple programming paradigms and is used in many areas."
print(textwrap.fill(text, width=30))例 3:縮進(jìn)
import textwrap
text = "這是第一行。\n這是第二行。"
print(textwrap.indent(text, prefix=">> "))例 4:去除多余縮進(jìn)
import textwrap
text = """
第一級縮進(jìn)
第二級縮進(jìn)
"""
print(textwrap.dedent(text))例 5:縮略摘要
import textwrap
text = "Python 是一個極其流行且強大的編程語言,適合初學(xué)者和專家。"
print(textwrap.shorten(text, width=30, placeholder="..."))上述代碼運行結(jié)果是:Python...。
textwrap.shorten() 的內(nèi)部機制是按空格切詞(英文中的單詞),然后在不超過指定 width 的前提下截斷,并附加 placeholder(如 ...)。但如果輸入字符串中一開始就有一個長單詞(或連續(xù)無空格的文本),它會整體被替換為 ...。
中文分詞替代代碼:
text = "Python 是一個極其流行且強大的編程語言,適合初學(xué)者和專家。"
short_text = text[:13] + "..."
print(short_text)◆◆ ◆
常用函數(shù)速覽
textwrap.wrap(text, width=70, **kwargs)
將字符串折行為多個長度不超過 width 的子串列表。
參數(shù):
text:要格式化的文本
width:每行最大寬度(默認(rèn) 70)
可選參數(shù)包括 initial_indent(首行縮進(jìn))、subsequent_indent(其余行縮進(jìn))等。
返回:字符串列表(每行為一個元素)
textwrap.fill(text, width=70, **kwargs)
將字符串折行后返回一個合并的字符串(每行通過換行符連接)。
參數(shù):同上
返回:格式化后的多行字符串
textwrap.shorten(text, width, placeholder="...")
將單行文本縮略為摘要(不會折行)。
參數(shù):
text:原始文本
width:允許的最大寬度
placeholder:縮略結(jié)尾標(biāo)記(默認(rèn) '...')
返回:截斷后的摘要字符串
注意:僅適用于單行文本,且會自動去除多余空格。
textwrap.indent(text, prefix, predicate=None)
為每一行加上統(tǒng)一前綴(常用于段落縮進(jìn))。
參數(shù):
text:多行文本
prefix:要添加的前綴字符串
predicate:函數(shù),返回 True 表示該行添加前綴(默認(rèn)所有行都添加)
返回:添加前綴后的多行字符串
textwrap.dedent(text)
去除所有行中共同的最小縮進(jìn)(空格或 tab)前綴。
參數(shù):
text :多行字符串
返回:去除縮進(jìn)后的新字符串
◆◆ ◆
補充說明
textwrap 是一個專注于“文本排版美化”的標(biāo)準(zhǔn)庫,功能雖簡單卻非常實用。它特別適合用于命令行程序的輸出格式化、日志系統(tǒng)的對齊、文檔生成腳本、以及代碼注釋美化等各種需要處理“人類可讀文本”的場景。
如果你需要在終端或腳本中輸出優(yōu)雅的文本格式,textwrap 是非常值得掌握的工具。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.