13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联Python教程:textwrap—-文本自动换行与填充

textwrap —- 文本自动换行与填充

源代码: Lib/textwrap.py


textwrap 模块提供了一些快捷函数,以及可以完成所有工作的类 TextWrapper。 如果你只是要对一两个文本字符串进行自动换行或填充,快捷函数应该就够用了;否则的话,你应该使用 TextWrapper 的实例来提高效率。

textwrap.wrap(text, width=70, **, initial_indent=’’, subsequent_indent=’’, expand_tabs=True, replace_whitespace=True, fix_sentence_endings=False, break_long_words=True, drop_whitespace=True, break_on_hyphens=True, tabsize=8, max_lines=None, placeholder=’ […]‘*)

text (字符串) 中的单独段落自动换行以使每行长度最多为 width 个字符。 返回由输出行组成的列表,行尾不带换行符。

与 TextWrapper 的实例属性对应的可选的关键字参数,具体文档见下。

请参阅 TextWrapper.wrap() 方法了解有关 wrap() 行为的详细信息。

textwrap.fill(text, width=70, **, initial_indent=’’, subsequent_indent=’’, expand_tabs=True, replace_whitespace=True, fix_sentence_endings=False, break_long_words=True, drop_whitespace=True, break_on_hyphens=True, tabsize=8, max_lines=None, placeholder=’ […]‘*)

text 中的单独段落自动换行,并返回一个包含被自动换行段落的单独字符串。 fill() 是以下语句的快捷方式

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

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

textwrap.shorten(text, width, **, fix_sentence_endings=False, break_long_words=True, break_on_hyphens=True, placeholder=’ […]‘*)

折叠并截短给定的 text 以符合给定的 width

首先,将折叠 text 中的空格(所有连续空格替换为单个空格)。 如果结果能适合 width 则将其返回。 否则将丢弃足够数量的末尾单词以使得剩余单词加 placeholder 能适合 width

 
 
 
 
  1. >>> textwrap.shorten("Hello world!", width=12)
  2. 'Hello world!'
  3. >>> textwrap.shorten("Hello world!", width=11)
  4. 'Hello [...]'
  5. >>> textwrap.shorten("Hello world", width=10, placeholder="...")
  6. 'Hello...'

可选的关键字参数对应于 TextWrapper 的实际属性,具体见下文。 请注意文本在被传入 TextWrapper 的 fill() 函数之前会被折叠,因此改变 tabsize, expand_tabs, drop_whitespace 和 replace_whitespace 的值将没有任何效果。

3.4 新版功能.

textwrap.dedent(text)

移除 text 中每一行的任何相同前缀空白符。

这可以用来清除三重引号字符串行左侧空格,而仍然在源码中显示为缩进格式。

请注意制表符和空格符都被视为是空白符,但它们并不相等:以下两行 " hello""\thello" 不会被视为具有相同的前缀空白符。

只包含空白符的行会在输入时被忽略并在输出时被标准化为单个换行符。

例如:

 
 
 
 
  1. def test():
  2. # end first line with \ to avoid the empty line!
  3. s = '''\
  4. hello
  5. world
  6. '''
  7. print(repr(s)) # prints ' hello\n world\n '
  8. print(repr(dedent(s))) # prints 'hello\n world\n'

textwrap.indent(text, prefix, predicate=None)

prefix 添加到 text 中选定行的开头。

通过调用 text.splitlines(True) 来对行进行拆分。

默认情况下,prefix 会被添加到所有不是只由空白符(包括任何行结束符)组成的行。

例如:

 
 
 
 
  1. >>> s = 'hello\n\n \nworld'
  2. >>> indent(s, ' ')
  3. ' hello\n\n \n world'

可选的 predicate 参数可用来控制哪些行要缩进。 例如,可以很容易地为空行或只有空白符的行添加 prefix:

 
 
 
 
  1. >>> print(indent(s, '+ ', lambda line: True))
  2. + hello
  3. +
  4. +
  5. + world

3.3 新版功能.

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

文本最好在空白符位置自动换行,包括带连字符单词的连字符之后;长单词仅在必要时会被拆分,除非 TextWrapper.break_long_words 被设为假值。

class textwrap.TextWrapper(\*kwargs*)

TextWrapper 构造器接受多个可选的关键字参数。 每个关键字参数对应一个实例属性,比如说

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

相当于:

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

你可以多次重用相同的 TextWrapper 对象,并且你也可以在使用期间通过直接向实例属性赋值来修改它的任何选项。

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

TextWrapper 还提供了一些公有方法,类似于模块层级的便捷函数:


分享题目:创新互联Python教程:textwrap—-文本自动换行与填充
分享网址:http://cdbrznjsb.com/article/cdcdcsi.html

其他资讯

让你的专属顾问为你服务