Python有兩種格式化字符創(chuàng)的方式。我們簡單地稱為舊式和新式。這兩種方式的格式化在Python2和Python3中都使用。
使用%的舊式格式化
舊式格式化的形式為:string % data
- string 包含的是待插值的序列
轉(zhuǎn)換類型
- %s 字符串
- %d 十進(jìn)制整數(shù)
- %x 十六進(jìn)制整數(shù)
- %o 八進(jìn)制整數(shù)
- %f 十進(jìn)制浮點數(shù)
- %e 以科學(xué)計數(shù)法表示的浮點數(shù)
- %g 十進(jìn)制或科學(xué)計數(shù)法表示的浮點數(shù)
- %% 文本值%本身
一個字符串內(nèi)的%s意味著此處需要插入一個字符串,字符串中出現(xiàn)%的次數(shù)需要與%之后所提供的數(shù)據(jù)個數(shù)相同,如果需要插入一個數(shù)據(jù),直接將需要插入的數(shù)據(jù)置于%后即可,如果需要插入多個數(shù)據(jù),則需要將它們封裝進(jìn)一個元組(以圓括號為界,逗號分開)
還可以在%和指定類型的字母之間設(shè)定最大和最小寬度、排版以及填充字符
str_a = 'test123'
float_f = 3.14
n = 42
print_str = 'str = %s float is = %f number is = %d' % (str_a, float_f, n)
print(print_str)
- 為每個變量設(shè)定最小域?qū)挒?0個字符,右對齊,左側(cè)不夠用空格填充
blank_str = '%10s%10f%10d' % (str_a, float_f, n)
print(blank_str)
- 左對齊
blank_str = '%-10s%-10f%-10d' % (str_a, float_f, n)
print(blank_str)
- 右對齊,并且將浮點數(shù)的精度限制在小數(shù)點后4位
>>> '%10.4s%10.4f%10.4d' % (s,f,n)
' hahh 3.1416 0056'
- 去掉最小域?qū)挒?0限制
>>> '%.4s%.4f%.4d' % (s,f,n)
'hahh3.14160056'
- 作為將域?qū)?字符寬度等設(shè)定作為參數(shù)
>>> '%*.*d%*.*f%*.*s'%(3,4,n,5,4,f,10,2,s)
'00563.1416 ha'
使用{}和format的新式格式化
在python3中,使用新式格式化
>>> '{},{},{}'.format(n,f,s)
'678,1.242527,tecalgur'
- 自定義顯示順序
>>> '{2},{1},{0}'.format(f,s,n)
'678,tecalgur,1.242527'
上面的程序中 {2}代表顯示數(shù)組第3個 {1}代表顯示數(shù)組第2個 {0}代表顯示數(shù)組第1個
- 參數(shù)可以是字典或者變量,個格式串中的標(biāo)識符可以引用這些名稱
>>> '{a},{b},{c}'.format(a = 's123',b=3.14,c=22)
's123,3.14,22'
- 指定參數(shù)格式
>>> '{0:d}+{2:f}+{1:s}'.format(a,c,b)
'44+3.131310+aaabbbccc'
- 設(shè)置最小域?qū)?右對齊
>>> '{0:10d}{1:10f}{2:10s}'.format(a,b,c)
' 44 3.131310aaabbbccc '
- 另一種方式右對齊
>>> '{0:>3f}+{2:>2s}+{1:2d}'.format(3.111,23,'wx')
'3.111000+wx+23'
- 左對齊
>>> '{0:<3f}+{2:<2s}+{1:<2d}'.format(3.111,23,'wx')
'3.111000+wx+23'