Python實用技法第32篇:對齊文本字符串

上一篇文章: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篇:字符串連接及合併
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章