本文主要總結(jié)了format
格式化輸出文本的用法荷愕。
-
替換字段使用
{}
括起來玻墅,如果需要輸出結(jié)果包含{}
則應(yīng)使用{{}}
雙花括號轉(zhuǎn)義山林。In [1]: "{{test's string}}".format() Out[1]: "{test's string}"
-
使用未命名字段名替換和指定參數(shù)替換
一般用法既可以使用未命名字段也可以指定參數(shù)润脸,兩種可單獨使用也能混用漠魏,但是注意不能同時使用手動指定編號和自動編號:# 混合使用法舉例 In [5]: "{foo} {} {bar} {}".format(2, 4, foo=1, bar=3) Out[5]: '1 2 3 4' # 通過索引指定時可以不管參數(shù)的順序 In [6]: "{foo} {1} {bar} {0}".format(4, 2, foo=1, bar=3) Out[6]: '1 2 3 4' # 還可以使用引用 In [8]: import math In [9]: tmp = "模塊{mod.__name__}中的圓周率π的默認(rèn)值為{mod.pi}" In [10]: tmp.format(mod=math) Out[10]: '模塊math中的圓周率π的默認(rèn)值為3.141592653589793'
基本轉(zhuǎn)換標(biāo)識符的使用
-
三個標(biāo)志
s
倔矾、r
和a
分別是指使用str
、repr
和ascii
進行轉(zhuǎn)換嘆號!
之前的字符串:```py In [15]: "{str!s} {str!r} {str!a}".format(str="π") Out[15]: "π 'π' '\\u03c0'" ```
-
格式說明符冒號
:
的使用柱锹,一般其后跟類型說明符哪自。比如表示定點數(shù)的f
以及表示二進制的b
。```py # 浮點小數(shù)格式 In [22]: "The number is {:f}".format(2018) Out[22]: 'The number is 2018.000000' # 二進制格式 In [23]: "The number is {:b}".format(2018) Out[23]: 'The number is 11111100010' ```
其他的格式表示類型如下表:
類型 | 代表格式 |
---|---|
b | 用二進制表示整數(shù) |
c | 解讀整數(shù)為Unicode碼 |
d | 十進制整數(shù) |
e | 科學(xué)計數(shù)表示法 |
E | 同e 禁熏,可表示指數(shù) |
f | 指定位數(shù)的小數(shù)表示 |
F | 同f 壤巷,對特殊值inf 和nan 使用大寫表示 |
g | 自動選擇表示為小數(shù)或科學(xué)計數(shù),小數(shù)時至少一位 |
G | 同g 瞧毙,但使用大寫表示指數(shù)和特殊值 |
n | 同g 胧华,但跟隨地區(qū)區(qū)域顯示位數(shù)分隔符 |
o | 整數(shù)表示為八進制 |
s | 默認(rèn)寄症,表示文本字符串 |
x | 十六進制,其中使用小寫字母 |
X | 同x , 其中使用大寫字母 |
% | 表示為百分比 |
-
:
后面用整數(shù)表示寬度和精度矩动,需注意數(shù)字和文本的對齊位置不同有巧,表示精度時前面要加小數(shù)點.
:```py # 寬度 In [24]: "{:10}".format(2) Out[24]: ' 2' In [25]: "{:10}".format("2") Out[25]: '2 ' # 精度 In [30]: "{:.2f}".format(math.pi) Out[30]: '3.14' # 寬度加精度 In [31]: "{:10.5}".format(math.pi) Out[31]: ' 3.1416' ```
-
:
后面跟,
逗號表示插入千位數(shù)分隔符(跟隨地區(qū)格式)In [37]: '先掙他一個{:,}'.format(10**10) Out[37]: '先掙他一個10,000,000,000'
-
指定左對齊、右對齊和居中悲没,可在
:
后分別使用<
篮迎、>
和^
:
```py # :冒號后可接填充符,0則為用0填充 In [40]: "{:w^12}".format(" site ") Out[40]: 'www site www' In [41]: "{:0<10}".format(1234) Out[41]: '1234000000' ```
- 在對齊符合后也可使用
+
,=
,#
等分別表示在字符前顯示正號示姿,分離符號和文本柑潦,以及用不同進制顯示,由于不常用在此不做介紹峻凫。
綜合運用案例:打印購物小票
# 根據(jù)指定的寬度打印格式化小票
width = int(input('輸入寬度: '))
price_width = 10
item_width = width - price_width
header_tmpl = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
tmpl = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
print('-' * width)
print(header_tmpl.format('商 品', '價 格'))
print('·' * width)
print(tmpl.format('面 粉', 6.5))
print(tmpl.format('韭 菜', 3.5))
print(tmpl.format('雞 蛋', 10.0))
print(tmpl.format('蝦 仁', 18.6))
print(tmpl.format('醬 油', 12))
print('-' * width)
最終顯示結(jié)果為:
輸入寬度: 30
------------------------------
商 品 價 格
······························
面 粉 6.50
韭 菜 3.50
雞 蛋 10.00
蝦 仁 18.60
醬 油 12.00
------------------------------
以上部分內(nèi)容參考自《python編程基礎(chǔ)第三版》渗鬼,感謝閱讀,如果有遺漏歡迎留言補充荧琼。