1. 程式人生 > >Python的format()函式

Python的format()函式

前言

上篇博文,我們用format(number,',')快速實現了對數字千分位的分隔。
熟悉python的人都知道,foramt函式更常見的用法其實是str.format(),其基本語法是通過{}:來代替以前的%
示例:

>>>"{} {}".format("hello", "world")    # 不設定指定位置,按預設順序
'hello world'
 
>>> "{0} {1}".format("hello", "world")  # 設定指定位置
'hello world'
 
>>> "{1} {0} {1}"
.format("hello", "world") # 設定指定位置 'world hello world'

注意:如果在字串中需要直接展示花括號,則用另一個花括號包裹起來轉義。
見示例:

>>> "{{我是誰}}:{}".format("皮卡丘")
'{我是誰}:皮卡丘'

也支援引數式填寫,有點像SHELL的變數:

>>> "我是誰:{pikachu}".format(pikachu="皮卡丘")
'我是誰:皮卡丘'

數字格式化

數字 格式 輸出 描述
3.141592 {:.2f} 3.14 保留小數點後兩位
3.141592 {:+.2f} +3.14 帶符號保留小數點後兩位
3.141592 {:.0f} 3 不帶小數,四捨五入
3 {:0>2d} 03 數字補零 (填充左邊, 寬度為2)
3 {x<4d} 3xxx 數字補x (填充右邊, 寬度為4)
123456789 {:,} 123,456,789 千分位隔開
0.38 {:.2%} 38% 百分比格式
1000000000 {:.2e} 1.00e+09 指數記法
11 {:b} 1011 二進位制轉化

b、d、o、x 分別是二進位制、十進位制、八進位制、十六進位制。


看到這裡,其實上一篇千分位的處理,還有更進階的內容。
由表可知,千分位的分隔可以直接使用"{:,}".format(nunber)來解決,這裡有個問題,如果分隔的時候帶小數,且最後幾位是0的話,在被format轉化成字串的時候會被忽略,就像這樣:

>>> "{:,}".format(12345678.90)
'12,345,678.9'

>>> format(12345678.90,',')
'12,345,678.9'

如果我們希望保留想要的小數位數,需要這樣子:

>>> "{:,.2f}".format(12345678.90)
'12,345,678.90'

>>> "{:,.4f}".format(12345678.90)   #任意幾位都行
'12,345,678.9000'

所以,format函式在解決數字格式化輸出的時候是很強大的,可以組合使用其中的規則來達到個性化定製的目的。

END