Python 模塊 textwrap 用來格式化一段文本。
例如,可以按指定寬度添加換行符,在行首添加或者刪除縮進,按指定長度截取文字。
使用 fill() 函數格式化文字
fill() 函數接收一段文字,輸出格式好的文字。
輸出:
函數 fill() 使用 width 參數指定輸出的段落寬度。
結果按寬度50顯示這段文字。現在除了第一行外,其他行的格式都是左對齊。
刪除縮進
上面的例子中,第一行還有縮進,字符串中間還有很多空格或者 Tab。刪除空字符使用 dedent() 函數。
輸出:
可以看到,每行的縮進不見了,中間也沒有多餘的空字符了。
注意,使用 dedent() 每行按相同的縮進量縮進,如果某一行有多餘的空格,則會留下這些空。例如:
縮進後是:
第二行多餘的幾個空字符會留著。
結合使用 dedent() 和 fill() 函數
print(textwrap.fill(dedent_text, width=40))輸出:
首先使用 dedent() 函數取消縮進和壓縮中間連續的空字符或者 Tab,然後使用 strip() 函數去除首尾的換行符,最後使用 fill() 函數限制寬度 40 輸出。
indent() 函數添加前綴
使用 indent() 函數可以在行首添加前綴,下面在每行前面添加 |
輸出:
indent() 函數可選的第三個參數,predicate 使用它判斷這行是否該添加前綴,例如:
輸出:
第三個參數是個 lambda 表達式:lambda line: 'old' in line ,判斷該行存在 old 單詞,才會添加前綴。
當 predicate 參數返回 True 時,才會添加前綴。
使用 fill() 函數縮進
fill() 函數除了可以控制段落寬度以外,還可以控制首行和其他行的縮進。
輸出:
上例中,首先使用 dedent() 去掉每行的縮進和刪除字符串中間的多餘的空格或 Tab,再調用 strip() 去掉首尾的換行符。
又傳入了兩個命名參數 initial_indent,subsequent_indent。initial_indent 控制首行縮進,現在是使用4個空格,而 subsequent_indent 傳值為空,剩餘行不縮進。
使用 shorten() 函數截取字符串
輸出:
使用 shorten() 函數把長字符串截成了100個字符。最後的佔位符默認是 [...],可以通過 placeholder 參數修改。
閱讀更多 趣喜歡編程 的文章