textwrap.wrap()& textwrap.fill()在python 2中完全正常工作?

时间:2017-04-17 16:53:58

标签: python python-2.7

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

输出:

['这是','非常'非常'非常'非常'非常' ,'非常',' long','字符串。']

这是

非常

非常

非常

非常

非常

的字符串。

我得到的事实是textwrap.wrap()给了我一个列表,textwrap.fill给了我一个字符串。 在文档中说,"包装文本中的单个段落(一个字符串),因此每行最多都是宽字符长"。

但是我不明白为什么不是textwrap.wrap()形成的列表中每个元素的长度,如果8作为width参数传递,则为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)

输出:

这是

非常v

非常

非常

ry long

的字符串。

请帮我理解。提前谢谢。

1 个答案:

答案 0 :(得分:1)

正如documentation所述:

  

包装文本中的单个段落(字符串),因此每行最多   宽字符长。返回输出行列表,不带final   换行。

textwrap仅在单词分隔处(通常在空格处)分割单词,并确保每个字符串不超过宽度限制。注意:不会在每个宽度字符处拆分。

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