2019-05-14 11:25:41 3349瀏覽
Python字符串的格式化有兩種方式:一種是%格式符方式,一種是format方式。本篇文章扣丁學(xué)堂Python培訓(xùn)小編給讀者們分享一下Python多樣化輸出字符串--字符串格式化,感興趣的小伙伴就隨小編來了解一下吧。
(name)可選,用于選擇指定的key
>>> "%(name)s-----%(age)d "%{'name':'xx','age':20} 'xx-----20'
flags可選,可供選擇的值有:
+右對齊;正數(shù)前加正好,負(fù)數(shù)前加負(fù)號;
-左對齊;正數(shù)前無符號,負(fù)數(shù)前加負(fù)號;
空格右對齊;正數(shù)前加空格,負(fù)數(shù)前加負(fù)號;
0右對齊;正數(shù)前無符號,負(fù)數(shù)前加負(fù)號;用0填充空白處
width可選,占有寬度
name占10位,+,右對齊,age占10位,-,左對齊
>>> "%(name)+10s————————%(age)-10d————————"%{'name':'xx','age':20} ' xx————————20 ————————'
空格,右對齊
0,用0填充空白處
>>> "------%d******%02d "%(2018,0) '------2018******00'
.precision可選,小數(shù)點(diǎn)后保留的位數(shù)
只保留兩位小數(shù)
>>> '--------%(p).2f'%{'p':1.23456} '--------1.23' >>> '--------%(p)f'%{'p':1.23456} '--------1.234560'
typecode必選
c,整數(shù):將數(shù)字轉(zhuǎn)換成其unicode對應(yīng)的值,10進(jìn)制范圍為0<=i<=1114111(py27則只支持0-255);字符:將字符添加到指定位置
o,將整數(shù)轉(zhuǎn)換成八進(jìn)制表示,并將其格式化到指定位置
x,將整數(shù)轉(zhuǎn)換成十六進(jìn)制表示,并將其格式化到指定位置
>>> '***%c***%o***%x'%(65,15,15) '***A***17***f'
e,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成科學(xué)計(jì)數(shù)法,并將其格式化到指定位置(小寫e)
E,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成科學(xué)計(jì)數(shù)法,并將其格式化到指定位置(大寫E)
>>> '-----%(num)e------%(num)E'%{'num':1000000000} '-----1.000000e+09------1.000000E+09'
g,自動調(diào)整將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成浮點(diǎn)型或科學(xué)計(jì)數(shù)法表示(超過6位數(shù)用科學(xué)計(jì)數(shù)法),并將其格式化到指定位置(如果是科學(xué)計(jì)數(shù)則是e;)
G,自動調(diào)整將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成浮點(diǎn)型或科學(xué)計(jì)數(shù)法表示(超過6位數(shù)用科學(xué)計(jì)數(shù)法),并將其格式化到指定位置(如果是科學(xué)計(jì)數(shù)則是E;)
>>> '-----%(num)g------%(num1)G'%{'num':1000000000,'num1':100} '-----1e+09------100'
%,當(dāng)字符串中存在格式化標(biāo)志時(shí),需要用%%表示一個(gè)百分號(類似于轉(zhuǎn)意效果)
>>> 'aaa %' 'aaa %'' >>> 'aaa %s %%'%('bbb') 'aaa bbb %'
注:如果忽略name,那么%格式符后面,可以使用(),有幾個(gè)%占位符,后面就跟幾個(gè)變量或者值,順序要對應(yīng)好。如果只有一個(gè)%,括號可以省略。
舉例:
>>> print('%d-%02d-%02d %02d:%02d:%02d'%(2018,6,5,16,20,0)) 2018-06-05 16:20:00 >>> print('---%s---'%'yes') ---yes---
format方式
[fill]align#width.precision
fill【可選】空白處填充的字符
align【可選】對齊方式(需配合width使用)
<,內(nèi)容左對齊
>,內(nèi)容右對齊(默認(rèn))
=,內(nèi)容右對齊,將符號放置在填充字符的左側(cè),且只對數(shù)字類型有效。即使:符號+填充物+數(shù)字
^,內(nèi)容居中
sign【可選】有無符號數(shù)字
+,正號加正,負(fù)號加負(fù);
**-,正號不變,負(fù)號加負(fù);**
空格,正號空格,負(fù)號加負(fù);
#【可選】對于二進(jìn)制、八進(jìn)制、十六進(jìn)制,如果加上#,會顯示0b/0o/0x,否則不顯示
,【可選】為數(shù)字添加分隔符,如:1,000,000
width【可選】格式化位所占寬度
.precision【可選】小數(shù)位保留精度
type【可選】格式化類型
傳入”字符串類型“的參數(shù)s,格式化字符串類型數(shù)據(jù)空白,未指定類型,則默認(rèn)是None,同s
傳入“整數(shù)類型”的參數(shù)b,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成2進(jìn)制表示然后格式化c,將10進(jìn)制整數(shù)自動轉(zhuǎn)換為其對應(yīng)的unicode字符d,十進(jìn)制整數(shù)o,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成8進(jìn)制表示然后格式化;x,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成16進(jìn)制表示然后格式化(小寫x)X,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成16進(jìn)制表示然后格式化(大寫X)
傳入“浮點(diǎn)型或小數(shù)類型”的參數(shù)e,轉(zhuǎn)換為科學(xué)計(jì)數(shù)法(小寫e)表示,然后格式化;E,轉(zhuǎn)換為科學(xué)計(jì)數(shù)法(大寫E)表示,然后格式化;f,轉(zhuǎn)換為浮點(diǎn)型(默認(rèn)小數(shù)點(diǎn)后保留6位)表示,然后格式化;F,轉(zhuǎn)換為浮點(diǎn)型(默認(rèn)小數(shù)點(diǎn)后保留6位)表示,然后格式化;g,自動在e和f中切換G,自動在E和F中切換**%,顯示百分比(默認(rèn)顯示小數(shù)點(diǎn)后6位)
fill【可選】空白處填充的字符
align【可選】對齊方式(需配合width使用)
<,內(nèi)容左對齊
>,內(nèi)容右對齊(默認(rèn))
=,內(nèi)容右對齊,將符號放置在填充字符的左側(cè),且只對數(shù)字類型有效。即使:符號+填充物+數(shù)字
^,內(nèi)容居中
width【可選】格式化位所占寬度
>>> '---{:*^20s}----'.format('welcome') '---******welcome*******----' >>> '---{:*>20s}----'.format('welcome') '---*************welcome----' >>> '---{:*<20s}----'.format('welcome') '---welcome*************----'
#【可選】對于二進(jìn)制、八進(jìn)制、十六進(jìn)制,如果加上#,會顯示0b/0o/0x,否則不顯示
b,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成2進(jìn)制表示然后格式化
c,將10進(jìn)制整數(shù)自動轉(zhuǎn)換為其對應(yīng)的unicode字符
d,十進(jìn)制整數(shù)
o,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成8進(jìn)制表示然后格式化;
x,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成16進(jìn)制表示然后格式化(小寫x)
X,將10進(jìn)制整數(shù)自動轉(zhuǎn)換成16進(jìn)制表示然后格式化(大寫X)
三種方法表示
>>> "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{:c}".format(15, 15, 15, 15, 15, 15.87623,65) 'numbers: 1111,17,15,f,F, 1587.623000%,A' >>> "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%},{1:c}".format(15,65) 'numbers: 1111,17,15,f,F, 1500.000000%,A' >>> "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%},{cc:c}".format(num=15,cc=65) 'numbers: 1111,17,15,f,F, 1500.000000%,A'
,【可選】為數(shù)字添加分隔符,如:1,000,000
.precision【可選】小數(shù)位保留精度
>>> '---{:,d}----'.format(10000000) '---10,000,000----' >>> '---{:.2f}----'.format(1.2345) '---1.23----'
format常用格式化
>>> "i am {}, age {}, {}".format("seven", 18, 'alex') 'i am seven, age 18, alex' >>> "i am {}, age {}, {}".format(*["seven", 18, 'alex']) 'i am seven, age 18, alex' >>> "i am {0}, age {1}, really {0}".format("seven", 18) 'i am seven, age 18, really seven' >>> "i am {0}, age {1}, really {0}".format(*["seven", 18]) 'i am seven, age 18, really seven' >>> "i am {name}, age {age}, really {name}".format(name="seven", age=18) 'i am seven, age 18, really seven' >>> "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18}) 'i am seven, age 18, really seven' >>> "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33]) 'i am 1, age 2, really 3' >>> "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1) 'i am seven, age 18, money 88888.100000' >>> "i am {:s}, age {:d}".format(*["seven", 18]) 'i am seven, age 18' >>> "i am {name:s}, age {age:d}".format(name="seven", age=18) 'i am seven, age 18' >>> "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18}) 'i am seven, age 18'
最后想要了解更多關(guān)于Python和人工智能方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺為您提供權(quán)威的Python開發(fā)環(huán)境搭建視頻,Python培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實(shí)戰(zhàn)技能。扣丁學(xué)堂Python技術(shù)交流群:279521237。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開發(fā)免費(fèi)公開課】
查看更多關(guān)于"Python開發(fā)資訊"的相關(guān)文章>