textwrap —Literals 环绕和填充

源代码: Lib/textwrap.py


textwrap模块提供了一些便利Function,而TextWrapper这个类完成了所有工作。如果只是包装或填充一两个文本字符串,那么便利Function应该足够好;否则,您应使用TextWrapper的实例以提高效率。

可选的关键字参数对应于TextWrapper的实例属性,在下面记录。 * width *默认为70

有关wrap()行为的其他详细信息,请参见TextWrapper.wrap()方法。

"\n".join(wrap(text, ...))

特别是fill()接受与wrap()完全相同的关键字参数。

首先,* text 中的空格被折叠(所有空格均由单个空格代替)。如果结果适合 width *,则将其返回。否则,将从结尾处删除足够的单词,以便其余单词加上placeholder都适合width

>>> textwrap.shorten("Hello  world!", width=12)
'Hello world!'
>>> textwrap.shorten("Hello  world!", width=11)
'Hello [...]'
>>> textwrap.shorten("Hello world", width=10, placeholder="...")
'Hello...'

可选的关键字参数对应于TextWrapper的实例属性,在下面记录。请注意,在将文本传递给TextWrapper fill()函数之前,空格已折叠,因此更改tabsizeexpand_tabsdrop_whitespacereplace_whitespace的值将无效。

3.4 版的新Function。

这可以使三引号字符串与显示的左边缘对齐,同时仍将它们以缩进形式显示在源代码中。

请注意,制表符和空格都被视为空格,但它们并不相等:第" hello""\thello"行被认为没有公共的前导空格。

仅包含空格的行在 Importing 中被忽略,并在输出中标准化为单个换行符。

For example:

def test():
    # end first line with \ to avoid the empty line!
    s = '''\
    hello
      world
    '''
    print(repr(s))          # prints '    hello\n      world\n    '
    print(repr(dedent(s)))  # prints 'hello\n  world\n'

pass调用text.splitlines(True)来分隔行。

默认情况下,前缀被添加到并非仅由空格组成的所有行(包括任何行尾)。

For example:

>>> s = 'hello\n\n \nworld'
>>> indent(s, '  ')
'  hello\n\n \n  world'

可选的* predicate 参数可用于控制缩进的行。例如,很容易将 prefix *添加到空行和仅空格行:

>>> print(indent(s, '+ ', lambda line: True))
+ hello
+
+
+ world

版本 3.3 中的新Function。

wrap()fill()shorten()pass创建TextWrapper实例并在其上调用单个方法来工作。该实例不会被重用,因此对于使用wrap()和/或fill()处理许多文本字符串的应用程序,创建自己的TextWrapper对象可能更有效。

最好将文本包装在空白处,并在连字符后的连字符后紧跟;只有这样,除非有必要,除非TextWrapper.break_long_words设置为 false,否则长单词将被打断。

wrapper = TextWrapper(initial_indent="* ")

是相同的

wrapper = TextWrapper()
wrapper.initial_indent = "* "

您可以多次重复使用相同的TextWrapper对象,并且可以pass在使用之间直接分配给实例属性来更改其任何选项。

TextWrapper实例属性(以及构造函数的关键字参数)如下:

版本 3.3 中的新Function。

Note

如果expand_tabs为 false 且replace_whitespace为 true,则每个制表符都将替换为一个空格,这与制表符 extensions*并非相同。

Note

如果replace_whitespace为假,则换行符可能会出现在一行的中间,并导致奇怪的输出。因此,应将文本拆分为段落(使用str.splitlines()或类似名称),并分别包装。

[...] Dr. Frankenstein's monster [...]

和“现货”。在

[...] See Spot. See Spot run [...]

fix_sentence_endings默认为假。

由于句子检测算法依靠string.lowercase来定义“小写字母”,并且约定在句点后使用两个空格来分隔同一行中的句子,因此它专用于英语文本。

3.4 版的新Function。

3.4 版的新Function。

TextWrapper还提供了一些公共方法,类似于模块级的便捷Function:

首页