用python處理數(shù)據(jù)時(shí)滨攻,不管是直接打印結(jié)果展示還是函數(shù)返回值糯俗,經(jīng)常需要格式化輸出顶霞,對(duì)于一些特殊的用法肄程,偶爾會(huì)忘記,日常需要時(shí)又重新查看一遍API文檔,特花一點(diǎn)時(shí)間整理整理該模塊的一些常用用法蓝厌。
? ? ? ?python格式化輸出總共分成2種玄叠,一種類似于C語(yǔ)言printf的方式,稱為 Formatting Expression拓提,另外一種類似于C#的方式诸典,稱為String Formatting Method Calls,接下來(lái)會(huì)針對(duì)上述2類分別展開(kāi)
-
類似于C語(yǔ)言printf的方式
格式:%(name)[width].[precision]typecode
? ?(name)為命名
? ?flags可以有+,-,'?'或0崎苗。默認(rèn)右對(duì)齊狐粱,+表示輸出正負(fù)號(hào),主要是針對(duì)正號(hào)胆数。-表示左對(duì)齊肌蜻。'?'為一個(gè)空格,表示在正數(shù)的左側(cè)填充一個(gè)空格必尼,從而與負(fù)數(shù)對(duì)齊蒋搜。0表示使用0填充。
? ?width表示顯示寬度,可以動(dòng)態(tài)指定數(shù)值
? ?precision表示小數(shù)點(diǎn)后精度,可以動(dòng)態(tài)指定數(shù)值
- 簡(jiǎn)單使用
a='hello'
b=1
c=1.1
print("a is %s"%a) #打印字符串%s
print(" b is %d"%b)#打印整數(shù)%d
print(" c is %f"%c)#打印浮點(diǎn)數(shù)%f
- 較復(fù)雜使用
a='hello'
b=1
c=1.1
d=1.344445
print("%4d"%b)#指定占位符的寬度判莉,前面加數(shù)字%4d
print("%.2f"%d)#指定浮點(diǎn)數(shù)的小數(shù)點(diǎn)個(gè)數(shù)%.2f
print("%-8d"%b) #左對(duì)齊豆挽,即占位符補(bǔ)齊右邊%-8d
print("%02d"%b)#指定占位符
print("%*.*f"%(2,2,d))#利用*動(dòng)態(tài)指定寬度及小數(shù)點(diǎn)個(gè)數(shù)
print("%+d"%b) #打印結(jié)果為+1,已經(jīng)添加了符號(hào)
-
類似于C#的方式
格式:str.format()
- 通過(guò)位置索引映射
print("{0},{1},{0}".format('hello','hi'))#out:hello,hi,hello
print("{},{}".format('hello','hi'))#python2.7以上支持券盅,{}個(gè)數(shù)與format參數(shù)個(gè)數(shù)保持一致帮哈,否則報(bào)錯(cuò),out:hello,hi
- 通過(guò)下標(biāo)映射
list1=["hi",'hello']
print("{0[0]},{0[1]}".format(list1))#下標(biāo)個(gè)數(shù)應(yīng)與參數(shù)的長(zhǎng)度保持一致锰镀,out:hi,hello
print("{0[0]}-{0[1]}".format(list1))#下標(biāo)個(gè)數(shù)應(yīng)與參數(shù)的長(zhǎng)度保持一致娘侍,out:hi-hello
- 通過(guò)關(guān)鍵字映射
import sys
print("{name} - {age}".format(name="hi",age=24))#out:hi - 24
print("platform={sys.platform} - {age}".format(sys=sys,age=24))#win電腦上運(yùn)行,out:platform=win32 - 24
print("{d[hi]} : {d[2]}".format(d={"hi":3,"2":4}))#d[2]報(bào)錯(cuò),KeyError: 2L泳炉,目前未找到更好辦法憾筏,只是以這種方式打印字典時(shí),字典key盡量不使用數(shù)據(jù)花鹅,或者換成'2L'
- 格式化與填充
格式::[填充字符][對(duì)齊方式 <^>][寬度]
print('{:>8}'.format('188'))#out: 189,填充相比%更靈活
print('{:a>8}'.format('188'))#aaaaa189
print('{:.2f}'.format(3.1415))#out:3.14
print('{:,}'.format(12369132698) )#千分位格式化,out:12,369,132,698
-
總結(jié)
? ? ? ?從個(gè)人使用情況來(lái)看氧腰,以format()方式格式化輸出,更加簡(jiǎn)潔刨肃,填充比%方式多樣化