Python的format()函式
阿新 • • 發佈:2018-11-23
前言
上篇博文,我們用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
函式在解決數字格式化輸出的時候是很強大的,可以組合使用其中的規則來達到個性化定製的目的。