python格式化输出函数之format
format相對于老版的%有很多優(yōu)點
1.不需要理會數(shù)據(jù)類型
2.單個參數(shù)可以多次輸出,參數(shù)順序可以不同
3.填充方式十分靈活,對齊方式異常強大
4.官方推薦用的方式,%方式在后面的版本終將會被淘汰
一、str.format()方法會返回一個新的字符串,在新的字符串中,原字符串的替換字段被適當格式化后的參數(shù)替換,如下:
‘I love {0} ,I study {0} {1} years’.format(‘python’, 5) ==>I love python,I study python 5 years
format格式:
“{[field_name][!conversion][:][[fill]align][sign][#][0][width][,][.precision][type]}”.format()
1.字段名field_name
(1)每個替換字段由包含在花括號中的field_name標識的,如果field_name是簡單的整數(shù),就將被作為傳遞給str.format()的一個參數(shù)的索引位置,這種情況下,{0}、{1}..分別被format參數(shù)列表的第1、2….個參數(shù)代替,如果需要輸出花括號,那就寫兩遍:{{0}}
(2)可以很容易連接字符串其他數(shù)據(jù)類型,當然也可以用來連接字符串,但最好用str.join
“I {0}{1}{2}”.format(‘你’,[1,2],(‘a(chǎn)s’,3))===> “I 你[1, 2](‘a(chǎn)s’, 3)”
(3)字段名為關(guān)鍵字參數(shù)的名稱:關(guān)鍵字參數(shù)要在所有位置參數(shù)后
“{who} turned {age} this year”.format(who=’she’, age=88)==>she turned 88 this year
“the {who} was {0} this year”.format(12, who=’boy’)==>the boy was 12 this year
(4)字段名可以引用集合類型數(shù)據(jù):利用列表、字符串、元組的索引
l=[‘python’, ‘c’, ‘c++’, ‘ruby’, ‘java’]
‘I learn {0[1]} first,then {0[2]} and {0[4]},finally I for in love with {0[0]}’.format(l) ==> ‘I learn c first,then c++ and java,finally I for in love with python’
(5)字典類型的參數(shù):
d=dict(a=’hello’, b=’world’) =====>{“a”:”hello”, “b”:”world”}
“{0[a]} {0[b]}!!!”.format(d) ======>’hello world!!!’
這里需要注意的是:{0[a]}這里的a沒有引號,加了會報錯,但是如果是單純的字典利用key取values的時候必須加引號:d[‘a(chǎn)’],d[‘b’]
(6)用句點引用參數(shù)的屬性值
import math
“math.pi == {0.pi}”.format(math) ===>’math.pi == 3.141592653589793’
(7) py3.1以后,忽略字段名成為可能,這種情況下,Python會自動的進行處理
“{}:{}:{}”.format(‘a(chǎn)’,’b’,’c’) ===> ‘a(chǎn):b:c’
(8)序列解析傳參技術(shù)
“{0}{1}{2}”.format(*[1,2,3]) ==>’123’
“{0} {1}{2}”.format(*(‘hello’,’world’,3)) ==>’hello world3’
“{a} {b} {c}”.format(**{‘a(chǎn)’:’I’, ‘b’:’love’, ‘c’:’python’}) ===> ‘I love python’
2.轉(zhuǎn)換conversion:!s !r !a
通過向字段中添加conversion指定符可以強制指定結(jié)果是以字符串形式輸出還是以表象形式輸出;有三個這種指定符:s,用于強制使用字符串形式,r,用于強制使用表象形式,a用于強制使用表象形式但僅限于ASCII字符:
import decimal
“{0} {0!s} {0!r} {0!a}”.format(decimal.Decimal(‘93.4’)) ==>”93.4 93.4 Decimal(‘93.4’) Decimal(‘93.4’)”
由于上面這個字符串僅由ASCII字符組成,所有!r和!a一樣,下面這種方法可以阻止非ascii字符輸出
“{0} {0!s} {0!r} {0!a}”.format(“我愛python”) ==>”我愛python 我愛python ‘我愛python’ ‘\u6211\u7231python’”
3.格式規(guī)約(這部分講的是冒號之后的部分):[[fill]align][sign][#][0][width][,][.precision]
對于字符串而言,我們可以控制的包括填充字符、字段內(nèi)對其方式、字段寬度(最大值、最小值)、整數(shù)分隔符(一般是逗號),浮點數(shù)精度控制
(1)fill填充字符可以是除{外的字符,一般可以是0,#,*等,但是只能為1個字符,這里需要注意的是如果指定了fill,就一定要指定對齊字符align,對齊有下面三種:向左對齊<;向右對齊>;居中對齊^;再之后為可選的最小寬度和最大寬度(最大寬度前面加上句點.)
例子:
s=’The sword of truth’
‘{0:25}’.format(s) ==> ‘The sword of truth ’
‘{0:>25}’.format(s) ==> ’ The sword of truth’
‘{0:<25}’.format(s) ==> ‘The sword of truth ’
‘{0:^25}’.format(s) ==> ’ The sword of truth ’
‘{0:-^25}’.format(s) ==> ‘—The sword of truth—-’
‘{0:#^25}’.format(s) ==> ‘###The sword of truth####’
‘{0:.<25}’.format(s) ==> ‘The sword of truth…….’
注意下面兩種情況:
‘{0:.25}’.format(s) ===》’The sword of truth’
‘{0:.5}’.format(s) ===》’The s’
這里的句點不是填充符號,因為上面說過,fill必須和align一起出現(xiàn),所以這里的句點表示的是最大寬度:
最小寬度為m 最大寬度為n 實際寬度為w
1) m、n>w 按最小寬度填充字符
‘{0:^5.6}’.format(‘123’) ==> ‘*123’
‘{0:^6.5}’.format(‘123’) ==> ‘*123*’
2)w>m、n截斷
w>m>n ==> ‘{0:^6.5}’.format(‘1232345’) ==> ‘12323’
w>n>m ==> ‘{0:*^5.6}’.format(‘1232345’) ==> ‘123234’
3)m>w>n
‘{0:^6.4}’.format(‘12325’) ==> ‘*1232’
4)n>w>m
‘{0:*^4.6}’.format(‘12325’) ==> ‘12325’
5)單個
‘{0:*^4}’.format(‘12325’) ===> ‘12325’
‘{0:^6}’.format(‘12325’) ===>’12325’
‘{0:*^.4}’.format(‘12325’)===>’1232’
‘{0:*^.6}’.format(‘12325’)===> ‘12325’
(2)sign對于數(shù)字類型有效:+ -能在正數(shù)前面加上一個+,這個只需要記住他的位置就好了:[[fill]align][sign][#][0][width][,][.precision]
‘{0:#<+20.6f}’.format(12325.343) ==>’+12325.343000#######’
‘{0:b} {0:o} {0:x} {0:X}’.format(1461287) ==>’101100100110000100111 5446047 164c27 164C27’
注意:他們參數(shù)只能是數(shù)字不能使字符串,這里的b、o、x分別是數(shù)字的二進制、八進制、16進制、d為10進制是默認情況可以不寫。
在寬度后面可以加上一個逗號用于對整數(shù)分組
‘{0:,}’.format(1461287) ==> ‘1,461,287’
(3)對于浮點數(shù)的格式規(guī)約在結(jié)尾處有點差別,第一在可選最小寬度后面可以通過一個句點后跟一個整數(shù)指定保留小數(shù)的位數(shù)(包括小數(shù)點),也可以早結(jié)尾處添加一個類型符號:e表示使用指數(shù)形式,E是表示使用E指數(shù)形式,f表示使用標準的浮點形式,g表示通常格式,%會使數(shù)據(jù)擴大100倍后面加上%
“{0:-<10.6}”.format(math.pi)==》’3.14159—’
“{0:-<.5}”.format(math.pi)==》’3.1416’
“{0:-<.5e}”.format(math.pi*100) ==>’3.14159e+02’
“{0:%}”.format(math.pi)==》’314.159265%’
(3)關(guān)于復(fù)數(shù)
“{0.real:.3f}{0.imag:+.3f}j”.format(4.2344+5.3445j) ==> ‘4.234+5.345j’
“{0.real:.3f}{0.imag:-.3f}j”.format(4.2344+5.3445j) ==> ‘4.234-5.345j’
前面的+-可以不寫讓他自己去判斷:
“{0.real:.3f}{0.imag:.3f}j”.format(4.2344+5.3445j) ==> ‘4.234+5.345j’
“{0.real:.3f}{0.imag:.3f}j”.format(4.2344+5.3445j) ==> ‘4.234-5.345j’
總結(jié)
以上是生活随笔為你收集整理的python格式化输出函数之format的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 至尊宝代表哪一种人?
- 下一篇: 数字化住宅小区对计算机网络有需求,浅谈智