06.19 Python 模塊 Textwrap

Python 模塊 Textwrap

Python 模塊 textwrap 用來格式化一段文本。

例如,可以按指定寬度添加換行符,在行首添加或者刪除縮進,按指定長度截取文字。

使用 fill() 函數格式化文字


fill() 函數接收一段文字,輸出格式好的文字。

Python 模塊 Textwrap

輸出:

Python 模塊 Textwrap

函數 fill() 使用 width 參數指定輸出的段落寬度。

結果按寬度50顯示這段文字。現在除了第一行外,其他行的格式都是左對齊。

刪除縮進


上面的例子中,第一行還有縮進,字符串中間還有很多空格或者 Tab。刪除空字符使用 dedent() 函數。

Python 模塊 Textwrap

輸出:

Python 模塊 Textwrap

可以看到,每行的縮進不見了,中間也沒有多餘的空字符了。

注意,使用 dedent() 每行按相同的縮進量縮進,如果某一行有多餘的空格,則會留下這些空。例如:

Python 模塊 Textwrap

縮進後是:

Python 模塊 Textwrap

第二行多餘的幾個空字符會留著。

結合使用 dedent() 和 fill() 函數

Python 模塊 Textwrap

print(textwrap.fill(dedent_text, width=40))輸出:

Python 模塊 Textwrap

首先使用 dedent() 函數取消縮進和壓縮中間連續的空字符或者 Tab,然後使用 strip() 函數去除首尾的換行符,最後使用 fill() 函數限制寬度 40 輸出。

indent() 函數添加前綴


使用 indent() 函數可以在行首添加前綴,下面在每行前面添加 |

Python 模塊 Textwrap

輸出:

Python 模塊 Textwrap

indent() 函數可選的第三個參數,predicate 使用它判斷這行是否該添加前綴,例如:

Python 模塊 Textwrap

輸出:

Python 模塊 Textwrap

第三個參數是個 lambda 表達式:lambda line: 'old' in line ,判斷該行存在 old 單詞,才會添加前綴。

當 predicate 參數返回 True 時,才會添加前綴。

使用 fill() 函數縮進


fill() 函數除了可以控制段落寬度以外,還可以控制首行和其他行的縮進。

Python 模塊 Textwrap

輸出:

Python 模塊 Textwrap

上例中,首先使用 dedent() 去掉每行的縮進和刪除字符串中間的多餘的空格或 Tab,再調用 strip() 去掉首尾的換行符。

又傳入了兩個命名參數 initial_indent,subsequent_indent。initial_indent 控制首行縮進,現在是使用4個空格,而 subsequent_indent 傳值為空,剩餘行不縮進。

使用 shorten() 函數截取字符串

Python 模塊 Textwrap

輸出:

Python 模塊 Textwrap

使用 shorten() 函數把長字符串截成了100個字符。最後的佔位符默認是 [...],可以通過 placeholder 參數修改。


分享到:


相關文章: