python的2種字串格式化輸出
字串格式化程式碼(typecode)
法一:
%格式使用下面的格式
%[(name)] [flags] [width][.precision] typecode
(name)輸出字典的value使用,這裡的name是字典的key(實際指定時,必須有外面的圓括號)
如:
print("%(n)d %(x)s" % {"n":1,"x":'spam'})
print("%(n)d %(x)s" % dict(n=1,x='spam'))
注意:這種形式不能與其他形式混用,因為%後使用了{}或dict,這兩種形式只能夠針對”字典”
flags取值為:-(左對齊)、+(正負號)、0(補零),不使用任何flag數字預設是右對齊
[width]和[.precision],分別為總寬度(包括小數點)和精度(小數點後的位數),可指定為*,則須在後面的列表中明確指出具體數值(一般情況下很少指定width和precision為*)
typecode:上表中的格式化程式碼
法二:format方法
形式.格式
形式:兩種表示方式,位置引數(格式安裝位置指定即可)和關鍵字引數(格式必須按照name=‘value’指定)
注意:最後這種形式,形式是以關鍵字執行,格式必須以name=value形式指定
要被列印的部分(即形式)通用格式:
{fieldname!conversionflag:formatspec}
fieldname是指定引數的一個數字或關鍵字(由此來確定匹配後面哪個引數),後面跟可選的“.name”或“[index]”成分引用
conversionflag可以是r、s或a分別是在該值上對repr、str或ascii內建函式的一次呼叫。
formatspec指定了如何表示該值,包括欄位寬度、對齊方式、補零、小數點精度等細節,並且以一個可選的資料型別編碼結束
冒號:後的formatspec具體形式為:
[[fill]align] [sign] [#] [0] [width] [.precision] [typecode]
fill可取0,即前導補0
align可能是<(左對齊)、>(右對齊)、=(一個標記字元後的補充)、^(居中對齊)
字串預設是左對齊,數字預設是右對齊
sign可取逗號 , 在使用輸出程式碼為d時(只能配合d使用),每三個數字輸出一個逗號
>>> '{0:,d}'.format(999999999)
'999,999,999'
#配合輸出程式碼x或X或o,使輸出16進位制、8進位制數前導加0x或0X或0o
0補0
width表示總寬度,包括小數點位
[.precision]表示精度,小數點後的位數
typecode前面的輸出程式碼
>>> '{0:X},{1:o},{2:b}'.format(255,255,255)
'FF,377,11111111'
>>> '{0:#X},{1:o},{2:b}'.format(255,255,255)
'0XFF,377,11111111'