>>> 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
的字符串。
请帮我理解。提前谢谢。
答案 0 :(得分:1)
正如documentation所述:
包装文本中的单个段落(字符串),因此每行最多 宽字符长。返回输出行列表,不带final 换行。
textwrap仅在单词分隔处(通常在空格处)分割单词,并确保每个字符串不超过宽度限制。注意:不会在每个宽度字符处拆分。
它用于将字符串拆分为多个部分,每个部分的字数最多等于或小于宽度字符长,而不会破坏任何字词。