<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          python字符串格式化深入詳解(四種方法)

          共 5855字,需瀏覽 12分鐘

           ·

          2020-12-11 14:44

          前言:本文詳細(xì)整理了python字符串格式化的幾種方式。

          一、使用 % 符號(hào)來(lái)進(jìn)行格式化

          格式符為真實(shí)值預(yù)留位置,并控制顯示的格式。格式符可以包含有一個(gè)類型碼,用以控制顯示的類型,如下:

          %s??? 字符串 (采用str()的顯示)

          %r??? 字符串 (采用repr()的顯示)

          %c??? 單個(gè)字符

          %b??? 二進(jìn)制整數(shù)

          %d??? 十進(jìn)制整數(shù)

          %i??? 十進(jìn)制整數(shù)

          %o??? 八進(jìn)制整數(shù)

          %x??? 十六進(jìn)制整數(shù)

          %e??? 指數(shù) (基底寫(xiě)為e)

          %E??? 指數(shù) (基底寫(xiě)為E)

          %f??? 浮點(diǎn)數(shù)

          %F??? 浮點(diǎn)數(shù),與上相同

          %g??? 指數(shù)(e)或浮點(diǎn)數(shù) (根據(jù)顯示長(zhǎng)度)

          %G??? 指數(shù)(E)或浮點(diǎn)數(shù) (根據(jù)顯示長(zhǎng)度)

          %%??? 字符"%",顯示百分號(hào)%

          另外,比如我要固定字符的寬度,小數(shù)精度等,可以用如下的方式,對(duì)格式進(jìn)行進(jìn)一步的控制:

          %[(name)][flags][width].[precision] typecode

          (1)(name)為命名:即參數(shù)的名稱,可以沒(méi)有這個(gè),怎么使用呢?注意(name需要使用括號(hào)括起來(lái)哦!?。。?/p>

          #?注意:這里的name,num括號(hào)不能掉
          'Hey?%(name)s,?there?is?a?%(num)f?number!'?%?{"name":?name,?"num":?number?}


          (2)flags可以有+,-,' '或0。+表示右對(duì)齊。-表示左對(duì)齊。' '為一個(gè)空格,表示在正數(shù)的左側(cè)填充一個(gè)空格,從而與負(fù)數(shù)對(duì)齊。0表示左側(cè)使用0填充。

          (3)width表示顯示寬度

          (4)precision表示小數(shù)點(diǎn)后精度

          ?

          注意:百分號(hào)% 來(lái)格式化字符串是最早出現(xiàn)的,python里面稱之為printf風(fēng)格的字符串格式化,參考官方文檔:

          https://docs.python.org/zh-cn/3.7/library/stdtypes.html#old-string-formatting

          ?

          二、使用.format的格式

          字符串類型格式化采用format()方法,基本使用格式是:

          ?????<模板字符串>.format(<逗號(hào)分隔的參數(shù)>)

          2. 1 格式控制信息

          format()方法中<模板字符串>的槽除了包括參數(shù)序號(hào),還可以包括格式控制信息。此時(shí),槽的內(nèi)部樣式如下:

          {<參數(shù)序號(hào)>: <格式控制標(biāo)記>}? ?# 中間使用了一個(gè)冒號(hào)哦!

          其中,<格式控制標(biāo)記>用來(lái)控制參數(shù)顯示時(shí)的格式,包括:<填充><對(duì)齊><寬度><,><.精度><類型>6 個(gè)字段,這些字段都是可選的,可以組合使用,逐一介紹如下。

          (1)<填充>
          指<寬度>內(nèi)除了參數(shù)外的字符采用什么方式表示,默認(rèn)采用空格,可以通過(guò)<填充>更換。

          (2)<對(duì)齊>
          指參數(shù)在<寬度>內(nèi)輸出時(shí)的對(duì)齊方式,分別使用<、>和^三個(gè)符號(hào)表示左對(duì)齊、右對(duì)齊和居中對(duì)齊。

          (3)<寬度>
          指當(dāng)前槽的設(shè)定輸出字符寬度,如果該槽對(duì)應(yīng)的format()參數(shù)長(zhǎng)度比<寬度>設(shè)定值大,則使用參數(shù)實(shí)際長(zhǎng)度。如果該值的實(shí)際位數(shù)小于指定寬度,則位數(shù)將被默認(rèn)以空格字符補(bǔ)充。

          s?=?"PYTHON"

          "{0:30}".format(s)
          Out[17]:?'PYTHON????????????????????????'

          "{0:>30}".format(s)
          Out[18]:?'????????????????????????PYTHON'

          "{0:*^30}".format(s)
          Out[19]:?'************PYTHON************'

          "{0:-^30}".format(s)
          Out[20]:?'------------PYTHON------------'

          "{0:3}".format(s)
          Out[21]:?'PYTHON'

          (4)逗號(hào)(,)
          <格式控制標(biāo)記>中逗號(hào)(,)用于顯示數(shù)字的千位分隔符,例如:

          "{0:-^20,}".format(1234567890)
          Out[24]:?'---1,234,567,890----'

          "{0:-^20}".format(1234567890)?#對(duì)比輸出
          Out[25]:?'-----1234567890-----'

          "{0:-^20,}".format(12345.67890)
          Out[26]:?'----12,345.6789-----'


          ?(5)<.精度>? ?# 注意:前面有一個(gè)小數(shù)點(diǎn)哦!
          表示兩個(gè)含義,由小數(shù)點(diǎn)(.)開(kāi)頭。對(duì)于浮點(diǎn)數(shù),精度表示小數(shù)部分輸出的有效位數(shù)。對(duì)于字符串,精度表示輸出的最大長(zhǎng)度。

          "{0:.2f}".format(12345.67890)
          Out[29]:?'12345.68'

          "{0:H^20.3f}".format(12345.67890)
          Out[30]:?'HHHHH12345.679HHHHHH'

          "{0:.4}".format("PYTHON")
          Out[31]:?'PYTH'

          (6)<類型>
          表示輸出整數(shù)和浮點(diǎn)數(shù)類型的格式規(guī)則。對(duì)于整數(shù)類型,輸出格式包括6 種:

          b: 輸出整數(shù)的二進(jìn)制方式;
          c: 輸出整數(shù)對(duì)應(yīng)的 Unicode 字符;
          d: 輸出整數(shù)的十進(jìn)制方式;
          o: 輸出整數(shù)的八進(jìn)制方式;
          x: 輸出整數(shù)的小寫(xiě)十六進(jìn)制方式;
          X: 輸出整數(shù)的大寫(xiě)十六進(jìn)制方式;

          "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
          Out[32]:?'110101001,?,425,651,1a9,1A9'

          對(duì)于浮點(diǎn)數(shù)類型,輸出格式包括4 種:
          e: 輸出浮點(diǎn)數(shù)對(duì)應(yīng)的小寫(xiě)字母 e 的指數(shù)形式;
          E: 輸出浮點(diǎn)數(shù)對(duì)應(yīng)的大寫(xiě)字母 E 的指數(shù)形式;
          f: 輸出浮點(diǎn)數(shù)的標(biāo)準(zhǔn)浮點(diǎn)形式;
          %: 輸出浮點(diǎn)數(shù)的百分形式。
          ?????浮點(diǎn)數(shù)輸出時(shí)盡量使用<.精度>表示小數(shù)部分的寬度,有助于更好控制輸出格式。

          "{0:e},{0:E},{0:f},{0:%}".format(3.14)
          Out[33]:?'3.140000e+00,3.140000E+00,3.140000,314.000000%'

          "{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14)
          Out[34]:?'3.14e+00,3.14E+00,3.14,314.00%'

          ?三、f-string來(lái)格式化字符串——python3.6以上

          f-string采用?{content:format}?設(shè)置字符串格式,其中?content?是替換并填入字符串的內(nèi)容,可以是變量、表達(dá)式或函數(shù)等,format?是格式描述符。采用默認(rèn)格式時(shí)不必指定?{:format},如上面例子所示只寫(xiě)?{content}?即可。

          關(guān)于格式描述符的詳細(xì)語(yǔ)法及含義可查閱Python官方文檔,這里按使用時(shí)的先后順序簡(jiǎn)要介紹常用格式描述符的含義與作用:

          關(guān)于這個(gè)format的格式,我們依然使用前面的方法二種format來(lái)格式化字符串的順序來(lái)說(shuō)明,也是按照下面這6個(gè)主要方面:

          <填充><對(duì)齊><寬度><,><.精度><類型>6 個(gè)字段,但是還有所拓展

          format_spec ?格式:???[[fill]align][sign][#][0][width][grouping_option][.precision][type]
          即format一般的格式為
          [填充字符][對(duì)齊方式][數(shù)字的正負(fù)號(hào)顯示][#][0][寬度][千分位分組符號(hào)][.小數(shù)精度][類型]

          1)填充 fill :?????可以是任何的字符
          2)對(duì)齊 align:?????"<"?|?">"?|?"="?|?"^"
          3)符號(hào) sign :?????這個(gè)僅僅對(duì)數(shù)值有效?"+"?|?"-"?|?"?"
          4)寬度 width:?????是一個(gè)整數(shù)數(shù)值,表示多少寬度
          5)grouping_option:表示千分位的分隔符號(hào),可以是??"_"?|?","
          6)精度 precision :.數(shù)字?
          7)類型 type :?????"b"?|?"c"?|?"d"?|?"e"?|?"E"?|?"f"?|?"F"?|?"g"?|?"G"?|?"n"?|?"o"?|?"s"?|?"x"?|?"X"?|?"%"

          下面是一些詳細(xì)說(shuō)明

          (2)對(duì)齊align

          對(duì)其align含義與作用
          <左對(duì)齊(字符串默認(rèn)對(duì)齊方式)
          >右對(duì)齊(數(shù)值默認(rèn)對(duì)齊方式)
          ^居中

          (3)符號(hào)sign

          數(shù)字符號(hào)sign含義與作用
          +負(fù)數(shù)前加負(fù)號(hào)(-),正數(shù)前加正號(hào)(+)
          -負(fù)數(shù)前加負(fù)號(hào)(-),正數(shù)前不加任何符號(hào)(默認(rèn))
          (空格)負(fù)數(shù)前加負(fù)號(hào)(-),正數(shù)前加一個(gè)空格

          注:僅適用于數(shù)值類型。

          (4)# 符號(hào)說(shuō)明

          # 描述符格式描述符含義與作用
          #切換數(shù)字顯示方式

          注1:僅適用于數(shù)值類型。

          注2:#?對(duì)不同數(shù)值類型的作用效果不同,詳見(jiàn)下表:

          數(shù)值類型不加#(默認(rèn))#區(qū)別
          二進(jìn)制整數(shù)'1111011''0b1111011'開(kāi)頭是否顯示?0b
          八進(jìn)制整數(shù)'173''0o173'開(kāi)頭是否顯示?0o
          十進(jìn)制整數(shù)'123''123'無(wú)區(qū)別
          十六進(jìn)制整數(shù)(小寫(xiě)字母)'7b''0x7b'開(kāi)頭是否顯示?0x
          十六進(jìn)制整數(shù)(大寫(xiě)字母)'7B''0X7B'開(kāi)頭是否顯示?0X

          (5)寬度與精度

          寬度與精度相關(guān)格式描述符

          格式描述符含義與作用
          width整數(shù)?width?指定寬度
          0width整數(shù)?width?指定寬度,開(kāi)頭的?0?指定高位用?0?補(bǔ)足寬度
          width.precision整數(shù)?width?指定寬度,整數(shù)?precision?指定顯示精度

          注1:0width?不可用于復(fù)數(shù)類型和非數(shù)值類型,width.precision?不可用于整數(shù)類型。
          注2:width.precision?用于不同格式類型的浮點(diǎn)數(shù)、復(fù)數(shù)時(shí)的含義也不同:用于?fF、eE?和?%?時(shí)?precision?指定的是小數(shù)點(diǎn)后的位數(shù),用于?g?和?G?時(shí)?precision?指定的是有效數(shù)字位數(shù)(小數(shù)點(diǎn)前位數(shù)+小數(shù)點(diǎn)后位數(shù))。
          注3:width.precision?除浮點(diǎn)數(shù)、復(fù)數(shù)外還可用于字符串,此時(shí)?precision?含義是只使用字符串中前?precision?位字符。

          (6)千位分隔符相關(guān)格式描述符

          格式描述符含義與作用
          ,使用,作為千位分隔符
          _使用_作為千位分隔符

          注1:若不指定?,?或?_,則f-string不使用任何千位分隔符,此為默認(rèn)設(shè)置。
          注2:,?僅適用于浮點(diǎn)數(shù)、復(fù)數(shù)與十進(jìn)制整數(shù):對(duì)于浮點(diǎn)數(shù)和復(fù)數(shù),,?只分隔小數(shù)點(diǎn)前的數(shù)位。
          注3:_?適用于浮點(diǎn)數(shù)、復(fù)數(shù)與二、八、十、十六進(jìn)制整數(shù):對(duì)于浮點(diǎn)數(shù)和復(fù)數(shù),_?只分隔小數(shù)點(diǎn)前的數(shù)位;對(duì)于二、八、十六進(jìn)制整數(shù),固定從低位到高位每隔四位插入一個(gè)?_(十進(jìn)制整數(shù)是每隔三位插入一個(gè)?_)。

          (7)類型描述

          格式描述符含義與作用適用變量類型
          s普通字符串格式字符串
          b二進(jìn)制整數(shù)格式整數(shù)
          c字符格式,按unicode編碼將整數(shù)轉(zhuǎn)換為對(duì)應(yīng)字符整數(shù)
          d十進(jìn)制整數(shù)格式整數(shù)
          o八進(jìn)制整數(shù)格式整數(shù)
          x十六進(jìn)制整數(shù)格式(小寫(xiě)字母)整數(shù)
          X十六進(jìn)制整數(shù)格式(大寫(xiě)字母)整數(shù)
          e科學(xué)計(jì)數(shù)格式,以?e?表示?×10^浮點(diǎn)數(shù)、復(fù)數(shù)、整數(shù)(自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù))
          E與?e?等價(jià),但以?E?表示?×10^浮點(diǎn)數(shù)、復(fù)數(shù)、整數(shù)(自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù))
          f定點(diǎn)數(shù)格式,默認(rèn)精度(precision)是6浮點(diǎn)數(shù)、復(fù)數(shù)、整數(shù)(自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù))
          F與?f?等價(jià),但將?nan?和?inf?換成?NAN?和?INF浮點(diǎn)數(shù)、復(fù)數(shù)、整數(shù)(自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù))
          g通用格式,小數(shù)用?f,大數(shù)用?e浮點(diǎn)數(shù)、復(fù)數(shù)、整數(shù)(自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù))
          G與?G?等價(jià),但小數(shù)用?F,大數(shù)用?E浮點(diǎn)數(shù)、復(fù)數(shù)、整數(shù)(自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù))
          %百分比格式,數(shù)字自動(dòng)乘上100后按?f?格式排版,并加?%?后綴浮點(diǎn)數(shù)、整數(shù)(自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù))

          常用的特殊格式類型:標(biāo)準(zhǔn)庫(kù)?datetime?給定的用于排版時(shí)間信息的格式類型,適用于?date、datetime?和?time?對(duì)象

          格式描述符含義顯示樣例
          %a星期幾(縮寫(xiě))'Sun'
          %A星期幾(全名)'Sunday'
          %w星期幾(數(shù)字,0?是周日,6?是周六)'0'
          %u星期幾(數(shù)字,1?是周一,7?是周日)'7'
          %d日(數(shù)字,以?0?補(bǔ)足兩位)'07'
          %b月(縮寫(xiě))'Aug'
          %B月(全名)'August'
          %m月(數(shù)字,以?0?補(bǔ)足兩位)'08'
          %y年(后兩位數(shù)字,以?0?補(bǔ)足兩位)'14'
          %Y年(完整數(shù)字,不補(bǔ)零)'2014'
          %H小時(shí)(24小時(shí)制,以?0?補(bǔ)足兩位)'23'
          %I小時(shí)(12小時(shí)制,以?0?補(bǔ)足兩位)'11'
          %p上午/下午'PM'
          %M分鐘(以?0?補(bǔ)足兩位)'23'
          %S秒鐘(以?0?補(bǔ)足兩位)'56'
          %f微秒(以?0?補(bǔ)足六位)'553777'
          %zUTC偏移量(格式是?±HHMM[SS],未指定時(shí)區(qū)則返回空字符串)'+1030'
          %Z時(shí)區(qū)名(未指定時(shí)區(qū)則返回空字符串)'EST'
          %j一年中的第幾天(以?0?補(bǔ)足三位)'195'
          %U一年中的第幾周(以全年首個(gè)周日后的星期為第0周,以?0?補(bǔ)足兩位)'27'
          %w一年中的第幾周(以全年首個(gè)周一后的星期為第0周,以?0?補(bǔ)足兩位)'28'
          %V一年中的第幾周(以全年首個(gè)包含1月4日的星期為第1周,以?0?補(bǔ)足兩位)'28'

          ?

          四、字符串模板 string template

          從簡(jiǎn)單的例子看起

          >>>?from?string?import?Template
          >>>?s?=?Template('$who?likes?$what')
          >>>?s.substitute(who='tim',?what='kung?pao')
          'tim?likes?kung?pao'
          >>>?d?=?dict(who='tim')
          >>>?Template('Give?$who?$100').substitute(d)
          Traceback?(most?recent?call?last):
          ...
          ValueError:?Invalid?placeholder?in?string:?line?1,?col?11
          >>>?Template('$who?likes?$what').substitute(d)
          Traceback?(most?recent?call?last):
          ...
          KeyError:?'what'
          >>>?Template('$who?likes?$what').safe_substitute(d)
          'tim?likes?$what'

          詳細(xì)關(guān)于字符串模板的使用請(qǐng)參考官方文檔:

          https://docs.python.org/3/library/string.html


          瀏覽 84
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色录像毛片 | 国产精品99久久久久久猫咪 | 久99久在线观看视频 | 俺去也俺来也在线www官网 | 日日嗨AV一区二区三区 |