讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 21.5 格式化的新方法 >

21.5 格式化的新方法

剛剛學習的格式化字符串的語法在 Python 的所有版本中都可以正常工作。但是在 Python 2.6 及之後的版本中,有一個新的格式化方法。因為這本書中使用的是 Python 2.7,所以我想我們也應該看一下這個新方法。你可能會在 Python 代碼中見到它,所以這樣你起碼會知道它是什麼意思。你可以自行決定使用新的還是舊的語法來格式化字符串。

format 方法

(在 Python 2.6 及之後的版本中)Python 字符串有一個名為 format 的方法。它的工作方式和你在前面見過的 % 格式化字符串很像。事實上,格式化說明符號 fge 等都是一樣的,只不過使用方式稍有區別。最好用例子來說明。

下面是舊的方法:

print 'I got %.1f in math, %.1f in science' % (math, science)  

下面是新的方法:

print 'I got {0:.1f} in math, {1:.1f} in science'.format(math, science)  

在這種新方法中,格式化說明符被放在花括號中,而不再以 % 開頭。01 告訴 Python 要格式化的是元組中的哪個變量。Python 計數從 0 開始,所以元組中第一個元素(變量 math)的索引是 0,第二個元素(變量 science)的索引是 1。然後使用 .1f,其用法和舊方法中一樣。

這就是新方法的全部內容。你可以像舊方法中用 % 格式化一樣,將格式化後的字符串存為一個變量:

distance = 149597870700myString = 'The sun is {0:.4e} meters from the earth'.format(distance)  

因為你不再使用 % 來區分格式化字符串,所以如果要打印一個 % 的話,也不需要再做任何特殊工作:

>>> print 'I got {0:.1f}% in math'.format(math)I got 87% in math  

Python 程序員們會覺得使用 format 語法更好,尤其是在 Python 3 中,但你可以自由選擇。本書中的例子都使用 % 語法。