上一篇文章:Python实用技法第31篇:文本过滤和清理
下一篇文章:Python实用技法第33篇:字符串连接及合并

 问题

我们需要以某种对齐方式将文本做格式化处理。

 解决方案

对于基本的字符串对齐要求,可以使用字符串的ljust()、rjust()和center()方法。示例如下:

>>> text = 'Hello World'>>> text.ljust(20)'Hello World '>>> text.rjust(20)'           Hello World'>>> text.center(20)'     Hello World '>>>

所有这些方法都可接受一个可选的填充字符。例如:

>>> text.rjust(20,'=')'=========Hello World'>>> text.center(20,'*')'****Hello World*****'>>>

format()函数也可以用来轻松完成对齐的任务。需要做的就是合理利用'<'、'>',或'^'字符以及一个期望的宽度值[2]。例如:

>>> format(text, '>20')'           Hello World'>>> format(text, '<20')'Hello World '>>> format(text, '^20')'     Hello World '>>>

如果想包含空格之外的填充字符,可以在对齐字符之前指定:

>>> format(text, '=>20s')'=========Hello World'>>> format(text, '*^20s')'****Hello World*****'>>>

当格式化多个值时,这些格式化代码也可以用在format()方法中。例如:

>>> '{:>10s} {:>10s}'.format('Hello', 'World')'    Hello        World'>>>

format()的好处之一是它并不是特定于字符串的。它能作用于任何值,这使得它更加通用。例如,可以对数字做格式化处理:

>>> x = 1.2345>>> format(x, '>10')'     1.2345'>>> format(x, '^10.2f')'     1.23 '

 讨论

在比较老的代码中,通常会发现%操作符用来格式化文本。例如:

>>> '%-20s' % text'Hello World '>>> '%20s' % text'           Hello World'

但是在新的代码中,我们应该会更钟情于使用format()函数或方法。format()比%操作符提供的功能要强大多了。此外,format()可作用于任意类型的对象,比字符串的ljust()、rjust()以及center()方法要更加通用。

想了解format()函数的所有功能,请参考Python的在线手册http://docs.python.org/3/libr... string. html#formatspec。

上一篇文章:Python实用技法第31篇:文本过滤和清理
下一篇文章:Python实用技法第33篇:字符串连接及合并