[基礎]-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 木風卜雨========================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章