1.介紹以及基本使用
在Python3中新增加了一個(gè)更強(qiáng)的格式化字符串的方法:format〉酵疲現(xiàn)在考赛,format已經(jīng)被反向移植到了Python2.7中
- 位置,{ } 做為占位符
In [1]: 'name is {},age is {}'.format('xiaowang',18)
Out[1]: 'name is xiaowang,age is 18'
In [2]: '{3} and {1}'.format('abc','ef','cde','th')
Out[2]: 'th and ef'
In [2]: '{2}, {1}, {0}'.format(*'abc')
Out[2]: 'c, b, a'
In [4]: "{0[0]},{1[0]}".format([1,2,3],("a","b"))
Out[4]: '1,a'
- 關(guān)鍵字
In [5]: 'name is {name},age is {age}'.format(age=19,name='xiaowang')
Out[5]: 'name is xiaowang,age is 19'
In [3]: '{name}, {age}'.format(**{"name":"xiaoming","age":20})
Out[3]: 'xiaoming, 20'
2. 標(biāo)準(zhǔn)的格式規(guī)范 ( {:}中的格式化語(yǔ)法 )
語(yǔ)法中是以:開頭莉测,從左到右依次包含以下字段颜骤。
填充字符:可以是任意的 單字符。
-
對(duì)齊選項(xiàng):
<表示左對(duì)齊捣卤。 >表示右對(duì)齊忍抽。 ^表示居中對(duì)齊八孝。 =表示 填充字符,放在數(shù)字正負(fù)號(hào)的后面鸠项,數(shù)字之前唆阿。這個(gè)選項(xiàng)只適合數(shù)字格式化。
-
符號(hào)選項(xiàng):這個(gè)字段只對(duì)數(shù)字有效锈锤。
+表示數(shù)字前面加上正負(fù)號(hào)驯鳖。 -表示負(fù)數(shù)前面加上符號(hào)。這個(gè)是默認(rèn)的久免。 空格表示正數(shù)前面保留一個(gè)空格
In [13]: '{:+f}; {:+f}'.format(3.14, -3.14) Out[13]: '+3.140000; -3.140000' In [15]: '{: f};{: f}'.format(3.14, -3.14) Out[15]: ' 3.140000;-3.140000'
-
最小字符寬度:整型數(shù)字浅辙。如果沒有指定,由 傳入的數(shù)據(jù)來(lái)決定阎姥。
填充對(duì)齊和最小字段寬度通常是一起使用的记舆。In [12]: "{:@^10}".format("abc") Out[12]: '@@@abc@@@@'
-
# 通常用于 格式化輸出其他進(jìn)制的整數(shù)。
b 代表二進(jìn)制 d 代表十進(jìn)制 o 代表八進(jìn)制 x 代表十六進(jìn)制呼巴,字母小寫 X 代表十六進(jìn)制泽腮,字母大寫
In [15]: "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42) Out[15]: 'int: 42; hex: 2a; oct: 52; bin: 101010' In [17]: "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) ...: Out[17]: 'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010' In [78]: "int: {1:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42,55) ...: Out[78]: 'int: 55; hex: 0x2a; oct: 0o52; bin: 0b101010'
-
0
如果沒有指定對(duì)齊選項(xiàng),并且0加在了最小寬度前面衣赶,相當(dāng)于“0=寬度”In [37]: "{:010}".format(100) Out[37]: '0000000100' In [38]: "{:0=10}".format(-100) Out[38]: '0000000100'
-
分組選項(xiàng):
,表示使用逗號(hào)作為千位分隔符诊赊。 通常用于格式化 整數(shù)和浮點(diǎn)數(shù)。
_表示使用一個(gè)下劃線作為千位分隔符府瞄。
使用下劃線的時(shí)候注意:如果 格式化后的字符是int或者float碧磅,每3個(gè)字符插入一個(gè)下劃線。如果 格式化后的字符類型是b遵馆、o鲸郊、x、X,那么每4個(gè)字符插入一個(gè)下劃線货邓。In [17]: '{:,}'.format(1234567890) Out[17]: '1,234,567,890' In [18]: '{:_}'.format(1234567890) Out[18]: '1_234_567_890' In [19]: '{:_b}'.format(100) Out[19]: '110_0100'
-
精度
如果被格式化的數(shù)據(jù)是 浮點(diǎn)數(shù):代表當(dāng)你使用f格式化浮點(diǎn)數(shù)的時(shí)候秆撮,保留的小數(shù)點(diǎn)位數(shù)。 注意不能是 整數(shù)换况。
如果被格式化的數(shù)據(jù)是 非數(shù)字:代表 最大字段寬度职辨。In [27]: '{:.3f}'.format(3.1415) Out[27]: '3.142' In [29]: '{:.3s}'.format("python") Out[29]: 'pyt'
-
類型
s 代表字符串,默認(rèn)的复隆,可以省略拨匆。b 代表二進(jìn)制
d 代表十進(jìn)制
o 代表八進(jìn)制
x 代表十六進(jìn)制姆涩,字母小寫
X 代表十六進(jìn)制挽拂,字母大寫f 代表浮點(diǎn)數(shù),默認(rèn)保留6位小數(shù)骨饿。
e 代表使用 科學(xué)計(jì)數(shù)法 來(lái)展示數(shù)字亏栈。
E 和e相同台腥,只不過使用 大寫字母表示。
科普:科學(xué)記數(shù)法是一種記數(shù)的方法绒北。把一個(gè)數(shù)表示成a(1≤a<10黎侈,n為整數(shù))與10的冪相乘的形式,這種記數(shù)法叫做科學(xué)記數(shù)法闷游。
當(dāng)我們要標(biāo)記或運(yùn)算某個(gè)較大或較小且位數(shù)較多時(shí)峻汉,用科學(xué)記數(shù)法免去浪費(fèi)很多空間和時(shí)間碰声。
例如:1000 = 1*10**3 1000的科學(xué)計(jì)數(shù)法就是:1e+03喉刘。通常3被稱做 指數(shù)。In [77]: '{:.2e}'.format(100) Out[77]: '1.00e+02' % 代表以百分比的形式顯示數(shù)字蛤肌。默認(rèn)保留6位小數(shù)业簿。 In [74]: '{:.3%}'.format(0.1) Out[74]: '10.000%' g 在e和f之間自動(dòng)切換瘤礁,大的數(shù)字用 科學(xué)計(jì)數(shù)法表示;小的數(shù)字用f格式化梅尤。 在e和f之間切換的規(guī)則: In [95]: '{:.2g}'.format(100.12456) # 精度 小于等于 指數(shù)柜思,g相當(dāng)于e Out[95]: '1e+02' In [97]: '{:.4g}'.format(100.12456) # 精度4,大于 指數(shù)2巷燥,g相當(dāng)于f赡盘,最終的精度=精度-1-指數(shù)=1,也就是說保留1位小數(shù)缰揪。 Out[97]: '100.1'
-
有時(shí)候會(huì)在格式化之前亡脑,先對(duì)數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換。
In [7]: "{!r}".format("abc") # 在格式化之前先調(diào)用 repr() 函數(shù)邀跃。 Out[7]: "'abc'" In [9]: "{}".format(repr("abc")) Out[9]: "'abc'" #兩個(gè)例子是等價(jià)的 !s 表示 格式化之前先調(diào)用 str() 函數(shù)霉咨。 !a 表示 格式化之前先調(diào)用 ascii() 函數(shù)。