Python中使用百分號%格式化字符串

我最早學(xué)習(xí)的是C++語言,對于C風(fēng)格的這種字符串格式化方式不熟悉于个,轉(zhuǎn)到Python之后覺得這種方式可以很方便地在字符串中插入變量镐作,于是去搜索了python的官方文檔,找到了一個關(guān)于字符串格式化的頁面呀酸。

這種格式化方法的使用方式是format % values凉蜂,其中format是字符串,value就是要插入的值性誉。在format中窿吩,需要用值替換的位置用轉(zhuǎn)換說明符(conversion specifier)進(jìn)行占位,轉(zhuǎn)換說明符是一組以%開頭的字符错览,例如:

>>> age = 17
>>> string = "Tom is %s years old."
>>> print(string % age)
Tom is 17 years old.

在上例中纫雁,%s即轉(zhuǎn)換說明符,s 表示將value轉(zhuǎn)換成字符串類型倾哺,python會在內(nèi)部調(diào)用str(age)轧邪,并把返回的字符串"17"插入到原來%s所在的位置。當(dāng)然悼粮,對于上例中value是數(shù)值的情況闲勺,也可以使用整型類型說明符di,二者效果相同:

>>> print("Tom is %d years old." % age)
Tom is 17 years old.
>>> print("Tom is %i years old." % age)
Tom is 17 years old.

如果format只需要一個參數(shù)扣猫,就像上例中的那樣菜循,那么后面的value必須是一個非元組對象(non-tuple object)。如果format需要多個參數(shù)申尤,value就得是一個含有恰好滿足format參數(shù)數(shù)量個元素的元組:

>>> age2 = 16
>>> print("Tom is %s years old \
while his brother Bob is %s years old." % (age, age2))
Tom is 17 years old while his brother Bob is 16 years old.

使用字典作為value也是可以的癌幕,這種方法必須在format中寫明字典的鍵,并用括號括起來:

>>> print("Tom is %(Tom)s years old \
while his brother Bob is %(Bob)s years old." % {'Tom': age, 'Bob': age2})
Tom is 17 years old while his brother Bob is 16 years old.

format中的轉(zhuǎn)換說明符一共由7部分構(gòu)成昧穿,按照排列順序依次是:
"%" 映射鍵 轉(zhuǎn)換標(biāo)記 最小字段寬度 精度 長度限定 轉(zhuǎn)換類型
其中僅有起始的百分號%和末尾的轉(zhuǎn)換類型是必須的勺远,中間的5個部分都是可選參數(shù)。映射鍵需要使用小括號括起來时鸵,如上例中的字典鍵胶逢。

轉(zhuǎn)換標(biāo)記有以下幾種:

轉(zhuǎn)換標(biāo)記 說明
# 轉(zhuǎn)換將會使用下方定義的替代形式
0 對于數(shù)值形式的轉(zhuǎn)換,用 "0" 補(bǔ)齊空位
- 居左 (如果與 "0" 同時出現(xiàn)饰潜,將會覆蓋 "0").
(空格) 轉(zhuǎn)換有符號的值時初坠,在正數(shù)前加上一個空格
+ 轉(zhuǎn)換有符號的值時,在正數(shù)前加上 "+" (會覆蓋空格標(biāo)記)

這些符號常和精度一起使用彭雾,精度既可以指定整數(shù)也可以指定小數(shù)碟刺,指定小數(shù)時需要加上小數(shù)點"."

>>> print("Tom is %3d years old." % age)  # 整數(shù)占三位
Tom is  17 years old.
>>> print("Tom is % d years old." % age)  # 加空格
Tom is  17 years old.
>>> print("Tom is %03d years old." % age)  # 用0補(bǔ)齊空位
Tom is 017 years old.
>>> print("Tom is %-3d years old." % age)  # 居左
Tom is 17  years old.
>>> print("Tom is %+d years old." % age)  # 添加+號
Tom is +17 years old.
>>> print("Tom is %+.2f years old." % age)  # 指定小數(shù)位數(shù)
Tom is +17.00 years old.

轉(zhuǎn)換類型如下表所示:

轉(zhuǎn)換類型 說明
d 十進(jìn)制有符號整型
i 十進(jìn)制有符號整型
o 無符號八進(jìn)制
u 無符號十進(jìn)制
x 無符號十六進(jìn)制(小寫)
X 無符號十六進(jìn)制(大寫)
e 浮點指數(shù)格式(小寫)
E 浮點指數(shù)格式(大寫)
f 十進(jìn)制浮點格式
F 十進(jìn)制浮點格式
g 若指數(shù)大于-4或小于精度則于"e"相同,其他情況為"f"
G 若指數(shù)大于-4或小于精度則于"E"相同薯酝,其他情況為"F"
c 單字符(接受整型或單字符的字符串類型)
r 字符串(使用repr()轉(zhuǎn)換python對象)
s 字符串(使用str()轉(zhuǎn)換python對象)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末布讹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浩村,更是在濱河造成了極大的恐慌,老刑警劉巖幔托,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穴亏,死亡現(xiàn)場離奇詭異,居然都是意外死亡重挑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門棠涮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谬哀,“玉大人,你說我怎么就攤上這事严肪∈芳澹” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵驳糯,是天一觀的道長篇梭。 經(jīng)常有香客問我,道長酝枢,這世上最難降的妖魔是什么恬偷? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮帘睦,結(jié)果婚禮上袍患,老公的妹妹穿的比我還像新娘。我一直安慰自己竣付,他們只是感情好诡延,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著古胆,像睡著了一般肆良。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逸绎,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天惹恃,我揣著相機(jī)與錄音,去河邊找鬼桶良。 笑死座舍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陨帆。 我是一名探鬼主播曲秉,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼采蚀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了承二?” 一聲冷哼從身側(cè)響起榆鼠,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亥鸠,沒想到半個月后妆够,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡负蚊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年神妹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片家妆。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸵荠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伤极,到底是詐尸還是另有隱情蛹找,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布哨坪,位于F島的核電站庸疾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏当编。R本人自食惡果不足惜届慈,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凌箕。 院中可真熱鬧拧篮,春花似錦、人聲如沸牵舱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芜壁。三九已至礁凡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間慧妄,已是汗流浹背顷牌。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留塞淹,地道東北人窟蓝。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像饱普,于是被迫代替她去往敵國和親运挫。 傳聞我的和親對象是個殘疾皇子状共,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容