Python占位符总结:%方式和format方式
Python中,我們?cè)陬A(yù)定義某類具有相似格式的變量或者輸出一句含有多個(gè)變量的提示語(yǔ)句時(shí),往往用到占位符,而占位符有兩種表達(dá)方式:
%方式:
下面這段代碼摘自matplotlib的_init_.py文件中class RcParams的定義:
msg_depr = "%s is deprecated and replaced with %s; please use the latter."msg_depr_set = ("%s is deprecated. Please remove it from your ""matplotlibrc and/or style files.")msg_depr_ignore = "%s is deprecated and ignored. Use %s instead."msg_obsolete = ("%s is obsolete. Please remove it from your matplotlibrc ""and/or style files.")msg_backend_obsolete = ("The {} rcParam was deprecated in version 2.2. In"" order to force the use of a specific Qt binding,"" either import that binding first, or set the ""QT_API environment variable.")其中,%s表示此展位符可用相關(guān)字符串代替,這是一個(gè)比較簡(jiǎn)單的實(shí)例,%方式的占位符具體格式為:
%[(name)][flags][width].[precision]typecode-
(name) 可選,用于選擇指定的key
-
flags 可選,可供選擇的值有:
+ 右對(duì)齊;正數(shù)前加正好,負(fù)數(shù)前加負(fù)號(hào);
- 左對(duì)齊;正數(shù)前無(wú)符號(hào),負(fù)數(shù)前加負(fù)號(hào);
空格 右對(duì)齊;正數(shù)前加空格,負(fù)數(shù)前加負(fù)號(hào);
0 右對(duì)齊;正數(shù)前無(wú)符號(hào),負(fù)數(shù)前加負(fù)號(hào);用0填充空白處 -
width 可選,占有寬度
-
.precision 可選,小數(shù)點(diǎn)后保留的位數(shù)
-
typecode 必選
s,獲取傳入對(duì)象的__str__方法的返回值,并將其格式化到指定位置
r,獲取傳入對(duì)象的__repr__方法的返回值,并將其格式化到指定位置
c,整數(shù):將數(shù)字轉(zhuǎn)換成其unicode對(duì)應(yīng)的值,10進(jìn)制范圍為 0 <= i <= 1114111(py27則只支持0-255);字符:將字符添加到指定位置
o,將整數(shù)轉(zhuǎn)換成 八 進(jìn)制表示,并將其格式化到指定位置
x,將整數(shù)轉(zhuǎn)換成十六進(jìn)制表示,并將其格式化到指定位置
d,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成 十 進(jìn)制表示,并將其格式化到指定位置
e,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成科學(xué)計(jì)數(shù)法,并將其格式化到指定位置(小寫e)
E,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成科學(xué)計(jì)數(shù)法,并將其格式化到指定位置(大寫E)
f, 將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù)表示,并將其格式化到指定位置(默認(rèn)保留小數(shù)點(diǎn)后6位)
F,同上
g,自動(dòng)調(diào)整將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成 浮點(diǎn)型或科學(xué)計(jì)數(shù)法表示(超過(guò)6位數(shù)用科學(xué)計(jì)數(shù)法),并將其格式化到指定位置(如果是科學(xué)計(jì)數(shù)則是e;)
G,自動(dòng)調(diào)整將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成 浮點(diǎn)型或科學(xué)計(jì)數(shù)法表示(超過(guò)6位數(shù)用科學(xué)計(jì)數(shù)法),并將其格式化到指定位置(如果是科學(xué)計(jì)數(shù)則是E;)
%,當(dāng)字符串中存在格式化標(biāo)志時(shí),需要用 %%表示一個(gè)百分號(hào)
注:Python中百分號(hào)格式化是不存在自動(dòng)將整數(shù)轉(zhuǎn)換成二進(jìn)制表示的方式
tpl = "i am %s" % "alex" print(tpl) tpl = "i am %s age %d" % ("alex", 18) print(tpl) tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18} print(tpl) tpl = "percent %.2f" % 99.97623 print(tpl) tpl = "i am %(pp).2f" % {"pp": 123.425556, } print(tpl) tpl = "i am %(pp).2f %%" % {"pp": 123.425556, } print(tpl) i am alex i am alex age 18 i am alex age 18 percent 99.98 i am 123.43 i am 123.43 %format方式:
以下是同時(shí)輸出字典roll_dict的key-value對(duì)的format表達(dá)方式:
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' total_times = 1000 roll_dict={"1":56, "2":65, "3":458, "4":25} for i, result in roll_dict.items():print('點(diǎn)數(shù)是{}的次數(shù)是:{},頻率是:{}' .format(i, result, result/total_times))點(diǎn)數(shù)是1的次數(shù)是:56,頻率是:0.056 點(diǎn)數(shù)是2的次數(shù)是:65,頻率是:0.065 點(diǎn)數(shù)是3的次數(shù)是:458,頻率是:0.458 點(diǎn)數(shù)是4的次數(shù)是:25,頻率是:0.025如上述例子所示:forma占位需要結(jié)合{}使用,{}中可以帶入相關(guān)變量的相關(guān)參數(shù),上述例子中{}是空白,未指定類型,則默認(rèn)是None,表示實(shí)際變量i,result,result/total_times依次取代前面三個(gè){}。
format的{}格式具體如下:
[[fill]align][sign][#][0][width][,][.precision][type]-
fill 【可選】空白處填充的字符
-
align 【可選】對(duì)齊方式(需配合width使用)
-
<,內(nèi)容左對(duì)齊
-
>,內(nèi)容右對(duì)齊(默認(rèn))
-
=,內(nèi)容右對(duì)齊,將符號(hào)放置在填充字符的左側(cè),且只對(duì)數(shù)字類型有效。 即使:符號(hào)+填充物+數(shù)字
-
^,內(nèi)容居中
-
sign 【可選】有無(wú)符號(hào)數(shù)字
+,正號(hào)加正,負(fù)號(hào)加負(fù);
-,正號(hào)不變,負(fù)號(hào)加負(fù);
空格 ,正號(hào)空格,負(fù)號(hào)加負(fù); -
# 【可選】對(duì)于二進(jìn)制、八進(jìn)制、十六進(jìn)制,如果加上#,會(huì)顯示 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ù)自動(dòng)轉(zhuǎn)換成2進(jìn)制表示然后格式化
- c,將10進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換為其對(duì)應(yīng)的unicode字符
- d,十進(jìn)制整數(shù)
- o,將10進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換成8進(jìn)制表示然后格式化;
- x,將10進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換成16進(jìn)制表示然后格式化(小寫x)
- X,將10進(jìn)制整數(shù)自動(dòng)轉(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, 自動(dòng)在e和f中切換
- G, 自動(dòng)在E和F中切換
- %,顯示百分比(默認(rèn)顯示小數(shù)點(diǎn)后6位)
從上述例子中 可以看出{}在語(yǔ)句中出現(xiàn)的位置依次與format中變量出現(xiàn)的位置從左到右依次對(duì)應(yīng),但如果{}中有整型數(shù)據(jù),則整型數(shù)據(jù)值表示format中元素的索引位置:
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! '''tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])print(tpl)輸出為:
i am 1, age 2, really 3如果改成:
tpl = "i am {0}, age {1[1]}, really {1[2]}".format([1, 2, 3], [11, 22, 33])print(tpl)則輸出為:
i am [1, 2, 3], age 22, really 33此種方式更顯靈活。
總結(jié)
以上是生活随笔為你收集整理的Python占位符总结:%方式和format方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python清除字符串中间空格的方法
- 下一篇: Python列表元素操作相关的2个函数和