今天白月黑羽和大家說說字串格式化,在python3中,字串格式化主要有2種方法,今天先和大家介紹類C風格的printf。
printf 風格
這種方式 和 傳統的C語言printf函式使用一樣的格式化語法。
比如上面的例子裡面,我們使用這種方法可以這樣格式化字串
salary = input('請輸入薪資:') # 計算出繳稅額,存入變數tax tax = int(salary) *25/100
# 計算出稅後工資,存入變數aftertax aftertax = int(salary) *75/100
print('稅前薪資是:%s 元, 繳稅:%s 元, 稅後薪資是:%s 元' %(salary,tax,aftertax))
大家執行一下看看,可以發現也能正確的輸出結果。
大家可以發現,和前面的字串拼接不同, 我們使用了下面這樣模板一樣的字串
稅前薪資是:%s 元, 繳稅:%s 元, 稅後薪資是:%s 元
其中 %s 就是模板中的佔位符,表示這個位置先佔著,待會兒要有資料填入到這裡。
然後再提供一個元組,裡面依次存放需要填入到 %s 佔位位置 資料。
這裡是使用變數 (salary,tax,aftertax) 。
%s 是一種格式化符號, Python 直譯器 看到 %s , 就會呼叫內建函式 str(),並將對應的格式化物件作為的引數傳入 , 返回的結果字串填入對應占位符。
簡單說 %s 位置填入的結果,就是呼叫str函式的返回值。
str()內建函式,它的引數幾乎所有內建型別的物件,字串、 整數、 浮點數 、list 等等都可以
所以 我們可以用 %s 為佔位符, 對應的格式化物件, 不僅僅是字串,可以是整數、 浮點數 、list 等等。
格式化字串裡面佔位符的個數 必須 和 後面對應的格式化物件個數相同,
比如
'稅前薪資:%s 元, 繳稅:%s 元, 稅後薪資:%s 元' %(salary,tax,aftertax)
佔位符是3個,那麼後面的元組裡面的格式化物件就是3個。
如果佔位符是2個,後面的元組裡面的格式化物件就應該是2個。像這樣
'稅前薪資:%s 元, 繳稅:%s 元' % (salary,tax)
如果佔位符是1個,後面的元組裡面的格式化物件就應該是1個。像這樣
'稅前薪資:%s 元' % (salary,)
還記得,我們說過, 元組裡面只有1個元素,後面別忘了加個逗號。
像這種只有一個格式化物件的情況下,可以直接就用格式化物件,不需要放到元組裡面,像這樣
'稅前薪資:%s 元' % salary
指定寬度和對齊
如果我們需要將下面這樣的3個字串進行格式化
'稅前薪資:%s 元' % 100000 '稅前薪資:%s 元' % 10000 '稅前薪資:%s 元' % 1000
得到的結果如下
稅前薪資:100000 元 稅前薪資:10000 元 稅前薪資:1000 元
會發現,由於被格式化的數字對應的字串長度不同,導致結果不對齊。這樣的輸出結果顯得不夠美觀。
右對齊
我們可以指定格式化結果的字串長度,比如我想要格式化結果至少10個字元,不足10個字元補空格,就可以這樣
'稅前薪資:%10s 元' % 100000 '稅前薪資:%10s 元' % 10000 '稅前薪資:%10s 元' % 1000
%10s 中的 10 就是指定了格式化結果至少10個字元。
得到的結果就是
稅前薪資: 100000 元 稅前薪資: 10000 元 稅前薪資: 1000 元
左對齊
如果我們希望是左邊對齊,而不是右邊對齊,就可以加一個 - 好,像這樣
'稅前薪資:%-10s 元' % 100000 '稅前薪資:%-10s 元' % 10000 '稅前薪資:%-10s 元' % 1000
可以得到如下結果
稅前薪資:100000 元 稅前薪資:10000 元 稅前薪資:1000 元
%d 和 %f
佔位符除了 %s ,還有其它的一些。常見的是 %d 和 %f 。
%d 用在 格式化物件 是 整數的情況 ,比如
'稅前薪資:%d 元' % 10000
%f 用在 格式化物件 是 浮點數的情況,比如
'稅前薪資:%f 元' % 10000.32
前面我們說過了 %s 也可以用來格式化 整數和 浮點數,但是有些情況下, %d %f 有特別的用處。比如,列印數字的時候,我們指定寬度,而且不足寬度,希望補零,而不是補空格,就可以這樣
'稅前薪資:%010d 元' % 100000 '稅前薪資:%010d 元' % 10000 '稅前薪資:%010d 元' % 1000
可以得到如下結果
稅前薪資:0000100000 元 稅前薪資:0000010000 元 稅前薪資:0000001000 元
對於小數的格式化,通常使用 %f,如下
'稅前薪資:%010f 元' % 1000.4522 '稅前薪資:%010f 元' % 1008.6621 '稅前薪資:%010f 元' % 1009.3351
可以得到如下結果
稅前薪資:1000.452200 元 稅前薪資:1008.662100 元 稅前薪資:1009.335100 元
如果我們想保留小數點後面2位數字,就可以加上 .2 像這樣
'稅前薪資:%010.2f 元' % 1000.4522 '稅前薪資:%010.2f 元' % 1008.6621 '稅前薪資:%010.2f 元' % 1009.3351
可以得到如下結果
稅前薪資:0001000.45 元 稅前薪資:0001008.66 元 稅前薪資:0001009.34 元
另外白月黑羽Python3教程中不斷在加入視訊講解幫助大家學習Python,歡迎大家一起學習