【问题标题】:How do textwrap.wrap() & textwrap.fill() exactly work in python 2?textwrap.wrap() 和 textwrap.fill() 如何在 python 2 中准确工作?
【发布时间】:2017-04-17 16:53:58
【问题描述】:
>>> import textwrap
>>> string = "This is a very very very very very long string."
>>> print textwrap.wrap(string,8)
>>> print textwrap.fill(string,8)

输出:

['This is', 'avery', 'very', 'very', 'very', 'very', 'long', 'string.']

这是

非常

非常

非常

非常

非常

字符串。

我知道 textwrap.wrap() 给了我一个列表,而 textwrap.fill 给了我一个字符串。 在文档中它说,“将单个段落包装在文本(字符串)中,因此每行最多宽度字符长”。

但是我不明白为什么不是由 textwrap.wrap() 形成的列表中每个元素的长度,如果 8 作为宽度参数传递,则为 8。为什么有时是 7,6 等。

同样,我不明白为什么在 textwrap.fill() 的情况下,每行的长度 = 8 个字符(如果宽度作为 8 传递,或者如果宽度作为 5 传递,则为 5)。 例如,有时是 7、6、4 等。为什么不完全等于宽度。 因为它说每行最多应该是宽度字符,所以如果将 with 传递为 8,为什么在使用行中可用的所有 8 个字符之前它会中断?

不应该像下面这样吗:

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

输出:

这是

很v

非常

非常好

很长

字符串。

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    正如documentation 所说:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 2019-04-29
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多