python3 格式化字符串--format方法

1.介紹以及基本使用

在Python3中新增加了一個(gè)更強(qiáng)的格式化字符串的方法:format〉酵疲現(xiàn)在考赛,format已經(jīng)被反向移植到了Python2.7中

  • 位置,{ } 做為占位符
In [1]: 'name is {},age is {}'.format('xiaowang',18)
Out[1]: 'name is xiaowang,age is 18'

In [2]: '{3} and {1}'.format('abc','ef','cde','th')
Out[2]: 'th and ef'

In [2]: '{2}, {1}, {0}'.format(*'abc')
Out[2]: 'c, b, a'

In [4]: "{0[0]},{1[0]}".format([1,2,3],("a","b"))
Out[4]: '1,a'
  • 關(guān)鍵字
In [5]: 'name is {name},age is {age}'.format(age=19,name='xiaowang')
Out[5]: 'name is xiaowang,age is 19'

In [3]: '{name}, {age}'.format(**{"name":"xiaoming","age":20})
Out[3]: 'xiaoming, 20'

2. 標(biāo)準(zhǔn)的格式規(guī)范 ( {:}中的格式化語(yǔ)法 )

語(yǔ)法中是以:開頭莉测,從左到右依次包含以下字段颜骤。

  • 填充字符:可以是任意的 單字符。

  • 對(duì)齊選項(xiàng):

    <表示左對(duì)齊捣卤。 
    >表示右對(duì)齊忍抽。 
    ^表示居中對(duì)齊八孝。                                                   
    =表示 填充字符,放在數(shù)字正負(fù)號(hào)的后面鸠项,數(shù)字之前唆阿。這個(gè)選項(xiàng)只適合數(shù)字格式化。
    
  • 符號(hào)選項(xiàng):這個(gè)字段只對(duì)數(shù)字有效锈锤。

    +表示數(shù)字前面加上正負(fù)號(hào)驯鳖。
    -表示負(fù)數(shù)前面加上符號(hào)。這個(gè)是默認(rèn)的久免。
    空格表示正數(shù)前面保留一個(gè)空格
    
    In [13]: '{:+f}; {:+f}'.format(3.14, -3.14)
    Out[13]: '+3.140000; -3.140000'
    
    In [15]: '{: f};{: f}'.format(3.14, -3.14)
    Out[15]: ' 3.140000;-3.140000'
    
  • 最小字符寬度:整型數(shù)字浅辙。如果沒有指定,由 傳入的數(shù)據(jù)來(lái)決定阎姥。
    填充對(duì)齊和最小字段寬度通常是一起使用的记舆。

    In [12]: "{:@^10}".format("abc")
    Out[12]: '@@@abc@@@@'
    
  • # 通常用于 格式化輸出其他進(jìn)制的整數(shù)。

    b 代表二進(jìn)制
    d 代表十進(jìn)制
    o 代表八進(jìn)制
    x 代表十六進(jìn)制呼巴,字母小寫
    X 代表十六進(jìn)制泽腮,字母大寫
    
    In [15]: "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
    Out[15]: 'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
    
    In [17]: "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)
        ...:     
    Out[17]: 'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
    
    In [78]: "int: {1:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42,55)
        ...:     
    Out[78]: 'int: 55;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
    
  • 0
    如果沒有指定對(duì)齊選項(xiàng),并且0加在了最小寬度前面衣赶,相當(dāng)于“0=寬度”

    In [37]: "{:010}".format(100)
    Out[37]: '0000000100'
    
    In [38]: "{:0=10}".format(-100)
    Out[38]: '0000000100'
    
  • 分組選項(xiàng):
    ,表示使用逗號(hào)作為千位分隔符诊赊。 通常用于格式化 整數(shù)和浮點(diǎn)數(shù)。
    _表示使用一個(gè)下劃線作為千位分隔符府瞄。
    使用下劃線的時(shí)候注意:如果 格式化后的字符是int或者float碧磅,每3個(gè)字符插入一個(gè)下劃線。如果 格式化后的字符類型是b遵馆、o鲸郊、x、X,那么每4個(gè)字符插入一個(gè)下劃線货邓。

    In [17]:  '{:,}'.format(1234567890)
    Out[17]: '1,234,567,890'
    
    In [18]:  '{:_}'.format(1234567890)
    Out[18]: '1_234_567_890'
    
    In [19]:  '{:_b}'.format(100)
    Out[19]: '110_0100'
    
  • 精度
    如果被格式化的數(shù)據(jù)是 浮點(diǎn)數(shù):代表當(dāng)你使用f格式化浮點(diǎn)數(shù)的時(shí)候秆撮,保留的小數(shù)點(diǎn)位數(shù)。 注意不能是 整數(shù)换况。
    如果被格式化的數(shù)據(jù)是 非數(shù)字:代表 最大字段寬度职辨。

    In [27]:  '{:.3f}'.format(3.1415)
    Out[27]: '3.142'
    
    In [29]:  '{:.3s}'.format("python")
    Out[29]: 'pyt'
    
  • 類型
    s 代表字符串,默認(rèn)的复隆,可以省略拨匆。

    b 代表二進(jìn)制
    d 代表十進(jìn)制
    o 代表八進(jìn)制
    x 代表十六進(jìn)制姆涩,字母小寫
    X 代表十六進(jìn)制挽拂,字母大寫

    f 代表浮點(diǎn)數(shù),默認(rèn)保留6位小數(shù)骨饿。

    e 代表使用 科學(xué)計(jì)數(shù)法 來(lái)展示數(shù)字亏栈。
    E 和e相同台腥,只不過使用 大寫字母表示。
    科普:科學(xué)記數(shù)法是一種記數(shù)的方法绒北。把一個(gè)數(shù)表示成a(1≤a<10黎侈,n為整數(shù))與10的冪相乘的形式,這種記數(shù)法叫做科學(xué)記數(shù)法闷游。
    當(dāng)我們要標(biāo)記或運(yùn)算某個(gè)較大或較小且位數(shù)較多時(shí)峻汉,用科學(xué)記數(shù)法免去浪費(fèi)很多空間和時(shí)間碰声。
    例如:1000 = 1*10**3 1000的科學(xué)計(jì)數(shù)法就是:1e+03喉刘。通常3被稱做 指數(shù)。

    In [77]:  '{:.2e}'.format(100)
    Out[77]: '1.00e+02'
    
    % 代表以百分比的形式顯示數(shù)字蛤肌。默認(rèn)保留6位小數(shù)业簿。
    In [74]:  '{:.3%}'.format(0.1)
    Out[74]: '10.000%' 
    
    g 在e和f之間自動(dòng)切換瘤礁,大的數(shù)字用 科學(xué)計(jì)數(shù)法表示;小的數(shù)字用f格式化梅尤。 
    在e和f之間切換的規(guī)則:
    In [95]:  '{:.2g}'.format(100.12456)    # 精度 小于等于 指數(shù)柜思,g相當(dāng)于e
    Out[95]: '1e+02'      
    
    
    In [97]:  '{:.4g}'.format(100.12456)   # 精度4,大于 指數(shù)2巷燥,g相當(dāng)于f赡盘,最終的精度=精度-1-指數(shù)=1,也就是說保留1位小數(shù)缰揪。
    Out[97]: '100.1'
    
  • 有時(shí)候會(huì)在格式化之前亡脑,先對(duì)數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換。

    In [7]: "{!r}".format("abc")    # 在格式化之前先調(diào)用 repr() 函數(shù)邀跃。
    Out[7]: "'abc'"
    
    In [9]: "{}".format(repr("abc"))
    Out[9]: "'abc'"
    
    #兩個(gè)例子是等價(jià)的
    
    !s 表示 格式化之前先調(diào)用 str() 函數(shù)霉咨。
    !a 表示 格式化之前先調(diào)用 ascii() 函數(shù)。
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拍屑,一起剝皮案震驚了整個(gè)濱河市途戒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌僵驰,老刑警劉巖喷斋,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蒜茴,居然都是意外死亡星爪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門粉私,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)顽腾,“玉大人,你說我怎么就攤上這事〕ぃ” “怎么了久信?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)漓摩。 經(jīng)常有香客問我裙士,道長(zhǎng),這世上最難降的妖魔是什么管毙? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任腿椎,我火速辦了婚禮,結(jié)果婚禮上夭咬,老公的妹妹穿的比我還像新娘酥诽。我一直安慰自己,他們只是感情好皱埠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布肮帐。 她就那樣靜靜地躺著,像睡著了一般边器。 火紅的嫁衣襯著肌膚如雪训枢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天忘巧,我揣著相機(jī)與錄音恒界,去河邊找鬼。 笑死砚嘴,一個(gè)胖子當(dāng)著我的面吹牛十酣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播际长,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼耸采,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了工育?” 一聲冷哼從身側(cè)響起虾宇,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎如绸,沒想到半個(gè)月后嘱朽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怔接,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年搪泳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扼脐。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岸军,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凛膏,我是刑警寧澤杨名,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布脏榆,位于F島的核電站猖毫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏须喂。R本人自食惡果不足惜吁断,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坞生。 院中可真熱鬧仔役,春花似錦、人聲如沸是己。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卒废。三九已至沛厨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摔认,已是汗流浹背逆皮。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留参袱,地道東北人电谣。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抹蚀,于是被迫代替她去往敵國(guó)和親剿牺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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