1. 程式人生 > >[基礎]-python字串格式化輸出

[基礎]-python字串格式化輸出

如果將那個定義說的通俗一些,字串格式化化,就是要先制定一個模板,在這個模板中某個或者某幾個地方留出空位來,然後在那些空位填上字串。那麼,那些空位,需要用一個符號來表示,這個符號通常被叫做佔位符(僅僅是佔據著那個位置,並不是輸出的內容)。

 

>>> "I like %s"
'I like %s'

在這個字串中,有一個符號:%s,就是一個佔位符,這個佔位符可以被其它的字串代替。比如:

>>> "I like %s" % "python"
'I like python'
>>> "I like %s" % "Pascal"
'I like Pascal'

這是較為常用的一種字串輸出方式。

另外,不同的佔位符,會表示那個位置應該被不同型別的物件填充。下面列出許多,供參考。不過,不用記憶,常用的只有%s%d,或者再加上%f,其它的如果需要了,到這裡來查即可。

 

佔位符 說明
%s 字串(採用str()的顯示)
%r 字串(採用repr()的顯示)
%c 單個字元
%b 二進位制整數
%d 十進位制整數
%i 十進位制整數
%o 八進位制整數
%x 十六進位制整數
%e 指數 (基底寫為e)
%E 指數 (基底寫為E)
%f 浮點數
%F 浮點數,與上相同
%g 指數(e)或浮點數 (根據顯示長度)
%G 指數(E)或浮點數 (根據顯示長度)

 

看例子:

>>> a = "%d years" % 15
>>> print a
15 years

當然,還可以在一個字串中設定多個佔位符,就像下面一樣

>>> print "Suzhou is more than %d years. %s lives in here." % (2500, "qiwsir")
Suzhou is more than 2500 years. qiwsir lives in here.

對於浮點數字的列印輸出,還可以限定輸出的小數位數和其它樣式。

>>> print "Today's temperature is %.2f" % 12.235
Today's temperature is 12.23
>>> print "Today's temperature is %+.2f" % 12.235
Today's temperature is +12.23

注意,上面的例子中,沒有實現四捨五入的操作,貌似只是擷取。其實,我在這裡用的那個12.235的確有點特殊化了。你不妨修改為別的數,試一試,看看是不是四捨五入了。至於這個數的特殊性,如果你不能理解,就請回頭找一找本教程中關於十進位制與二進位制數轉換的講述。

關於類似的操作,還有很多變化,比如輸出格式要寬度是多少等等。如果看官在程式設計中遇到了,可以到網上查詢。我這裡給一個參考圖示,也是從網上抄來的。

其實,上面這種格式化方法,常常被認為是太“古老”了。因為在python中還有新的格式化方法。

>>> s1 = "I like {0}".format("python")
>>> s1
'I like python'
>>> s2 = "Suzhou is more than {0} years. {1} lives in here.".format(2500, "qiwsir") 
>>> s2
'Suzhou is more than 2500 years. qiwsir lives in here.'

這就是python非常提倡的string.format()的格式化方法,其中{索引值}作為佔位符,

這種方法真的是非常好,而且非常簡單,只需要將對應的東西,按照順序在format後面的括號中排列好,分別對應占位符{}即可。我喜歡的方法。

如果你覺得還不明確,還可以這樣來做。

>>> print "Suzhou is more than {year} years. {name} lives in here.".format(year=2500, name="qiwsir") 
Suzhou is more than 2500 years. qiwsir lives in here.

真的很簡潔,看成優雅。

其實,還有一種格式化的方法,被稱為“字典格式化”,這裡僅僅列一個例子,如果看官要了解字典的含義,本教程後續會有的。

>>> lang = "python"
>>> print "I love %(program)s"%{"program":lang}
I love python

列舉了三種基本格式化的方法,你喜歡那種?我推薦:string.format()

 

========================================end 木風卜雨========================================

========================================end 木風卜雨========================================