2017-04-17 20 views
1
>>> import textwrap 
>>> string = "This is a very very very very very long string." 
>>> print textwrap.wrap(string,8) 
>>> print textwrap.fill(string,8) 

輸出:[ '字符串' '這是', '非常', '非常', '非常', '非常', '非常', '長',]textwrap.wrap()和textwrap.fill()如何在python 2中正確工作?

這是

非常

非常

非常

非常

非常

字符串。

我得到了一個事實,textwrap.wrap()給了我一個列表,textwrap.fill給了我一個字符串。 在文檔中它說:「用文本(一個字符串)包裝單個段落,所以每行至多是寬度字符長度」。

但我不明白爲什麼不是由textwrap.wrap()形成的列表中的每個元素的長度,如果將8作爲寬度參數傳遞,則爲8。爲什麼有時候7,6等等。

同樣,我不明白爲什麼在textwrap.fill()的情況下,每行的長度= 8個字符(如果寬度傳遞爲8或5,如果寬度傳遞爲5)。如在例子中,其有時,7,6,4等。爲什麼不完全等於寬度。 因爲它說最多每行都應該是寬度字符長,所以爲什麼它在使用所有可用的8個字符之前中斷,如果與8傳遞?

它不應該是這樣的下面:

>>> import textwrap 
>>> string = "This is a very very very very very long string." 
>>> print textwrap.fill(string,8) 

OUTPUT:

這是

非常v

紅黴素非常

非常五個

ry long

string。

請幫我理解。提前致謝。

回答

1

作爲documentation指出:

裹在文本(字符串)的單段所以每線長至多 寬度的字符。返回輸出行列表,沒有最終 換行符。

textwrap只在拆分單詞分解的話(通常在空格),並確保每根弦不走在寬度限制。注意:不是分割爲每寬度個字符。

它用於將字符串拆分爲多個部分,每個部分的字數最多可等於或小於寬度個字符,同時不會破壞任何字詞。