2017-04-17 99 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只在拆分单词分解的话(通常在空格),并确保每根弦不走在宽度限制。注意:不是分割为每宽度个字符。

它用于将字符串拆分为多个部分,每个部分的字数最多可等于或小于宽度个字符,同时不会破坏任何字词。