1. 程式人生 > >python的2種字串格式化輸出

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'