<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的3種“字符串格式化”方法

          共 3235字,需瀏覽 7分鐘

           ·

          2020-08-29 12:31

          點(diǎn)擊上方數(shù)據(jù)管道”,選擇“置頂星標(biāo)”公眾號

          干貨福利,第一時間送達(dá)

          3種字符串格式化工具的簡單介紹


          python2.5版本之前,我們使用的是老式字符串格式化輸出%s

          python3.0版本開始起(python2.6同期發(fā)布),Python中同時支持兩個版本的格式化,多出來的一個新版本就是利用format()函數(shù),進(jìn)行格式化輸出。

          但是python3.6版本后,又引入了一種新的字符串格式化方式f-string。從%s格式化到format格式化再到f-string格式化,格式化的方式越來越直觀,f-string的效率也較前兩個高一些,使用起來也比前兩個更簡單一些。

          3種字符串格式化工具的應(yīng)用對比

          1)基本用法

          這里首先先介紹這3個工具的基本用法,基本格式如下。

          • %格式化:占位符%,搭配%符號一起使用;
          • format()格式化:占位符{},搭配format()函數(shù)一起使用;
          • f-string格式化:占位符{},搭配f符號一起使用;
          ① 對比使用,觀察各自的特點(diǎn)
          a?=?"%s張飛、%s關(guān)羽、%s劉備、%s趙云"?%?(1,2,3,4)
          display(a)

          b??=?"{}張飛、{}關(guān)羽、{}劉備、{}趙云".format(1,2,3,4)
          display(b)

          c??=?f"{1}張飛、{2}關(guān)羽、{3}劉備、{4}趙云"
          display(c)

          結(jié)果如下:

          ② %格式化

          此種方式只支持固定形式的格式化填充,給的順序和填充順序完全一致。

          a?=?"四大天王:%s、%s、%s、%s"?%?("劉德華","郭富城","張學(xué)友","黎明")
          print(a)

          結(jié)果如下:

          ③ format()格式化

          此種方式不僅支持固定形式的格式化填充,還支持位置格式化填充,即共有三種形式。

          • 第一種方式:固定形式的格式化填充,給的順序和填充順序完全一致。
          • 第二種方式:大括號{ }中寫的是format()傳入值所對應(yīng)的下標(biāo)。
          • 第三種方式:大括號{ }中的變量,和format()傳入值是一一對應(yīng)的。
          #?第一種方式
          b1?=?"四大天王:{}、{}、{}、{}".format("劉德華","郭富城","張學(xué)友","黎明")
          print(b1)

          #?第二種方式
          b2?=?"四大天王:{2}、{0}、{3}、{1}".format("劉德華","郭富城","張學(xué)友","黎明")
          print(b2)

          #?第三種方式
          x1?=?"劉德華"
          x2?=?"郭富城"
          x3?=?"張學(xué)友"
          x4?=?"黎明"
          b3?=?"四大天王:{p}、{q}、{r}、{s}".format(p=x4,q=x2,r=x1,s=x3)
          print(b3)

          結(jié)果如下:

          ④ f-string格式化

          此種方式的填充,用起來更加隨意,直接在{}中輸入變量即可,極其方便,我們用一個簡單的案例看看。

          #?直接在{}中輸入變量即可,位置隨意放
          x1?=?"劉德華"
          x2?=?"郭富城"
          x3?=?"張學(xué)友"
          x4?=?"黎明"

          c?=?f"四大天王:{x1}{x3}{x2}{x4}"
          print(c)

          結(jié)果如下:

          3)填充功能對比

          首先我們要知道填充的概念是什么,只有知道了它的概念,才能夠靈活運(yùn)用。

          • 概念:當(dāng)指定了字符串最終的長度,但是現(xiàn)有的字符串沒有那么長,那么我們就用某種字符(填充字符)來填滿至這個長度,這就是“填充”
          ① %格式化
          • 格式:"%10s" % ("字符串"),使用前仔細(xì)觀察書寫格式
          • 含義:上述10代表字符串的填充長度。如果字符串的長度,大于填充長度,填充長度無效;如果字符串的長度,小于填充長度,則會將字符串長度填充至指定的填充長度;
          • 注意:此種填充,默認(rèn)是在字符串左側(cè)填充;
          a?=?"%s"?%?("黃同學(xué)")
          print(a,len(a))

          b?=?"%10s"?%?("黃同學(xué)")
          print(b,len(b))

          c?=?"%10s"?%?("黃同學(xué),我早上吃了一碗熱干面")
          print(c,len(c))

          結(jié)果如下:

          ② format()格式化
          • 格式:"{:10}".format("字符串"),使用前仔細(xì)觀察書寫格式
          • 含義:上述10代表字符串的填充長度。如果字符串的長度,大于填充長度,填充長度無效;如果字符串的長度,小于填充長度,則會將字符串長度填充至指定的填充長度;
          • 注意:此種填充,默認(rèn)是在字符串右側(cè)填充;
          a?=?"{:10}".format("黃同學(xué)")
          print(a,len(a))

          b?=?"{:10}".format("黃同學(xué)")
          print(b,len(b))

          c?=?"{:10}".format("黃同學(xué),我早上吃了一碗熱干面")
          print(c,len(c))

          結(jié)果如下:

          ③ f-string格式化
          • 格式:f"{name1:10}",使用前仔細(xì)觀察書寫格式
          • 含義:上述10代表字符串的填充長度,name1代表某個字符串變量。如果字符串的長度,大于填充長度,填充長度無效;如果字符串的長度,小于填充長度,則會將字符串長度填充至指定的填充長度;
          • 注意:此種填充,默認(rèn)是在字符串右側(cè)填充;
          name1?=?"黃同學(xué)"
          name2?=?"黃同學(xué),我早上吃了一碗熱干面"

          a?=?f"{name1:10}"
          print(a,len(a))

          b?=?f"{name2:10}"
          print(b,len(b))

          結(jié)果如下:

          3)對齊功能對比

          首先我們要知道填充的概念是什么,只有知道了它的概念,才能夠靈活運(yùn)用。

          • 概念:"對齊"要與"填充"一起使用,才會顯得有意義。當(dāng)我們進(jìn)行填充的時候,我們可以選擇只在字符串左側(cè)填充,也可以選擇只在字符串右側(cè)填充,還可以選擇在字符串兩側(cè)填充(字符串居中顯示的填充方式);
          ① %s:實(shí)現(xiàn)對齊功能,只有左對齊和右對齊;
          #?左填充
          a?=?'%10s'?%?('黃同學(xué)')
          print(a,len(a))

          #?右填充
          b?=?'%-10s'?%?('黃同學(xué)')
          print(b,len(b))

          結(jié)果如下:

          ② format():實(shí)現(xiàn)對齊功能,不僅有左對齊和右對齊,還有居中對齊;
          #?左填充
          a?=?'{:>10}'.format('黃同學(xué)')
          print(a,len(a))

          #?右填充
          b?=?'{:<10}'.format('黃同學(xué)')
          print(b,len(b))

          #?居中填充
          c?=?'{:^10}'.format('黃同學(xué)')
          print(c,len(c))

          結(jié)果如下:

          ③ f-string:實(shí)現(xiàn)對齊功能,不僅有左對齊和右對齊,還有居中對齊;
          name?=?"黃同學(xué)"

          a?=?f"{name:>10}"
          print(a,len(a))

          b?=?f"{name:<10}"
          print(b,len(b))

          c?=?f"{name:^10}"
          print(c,len(c))

          結(jié)果如下:

          4)使用“任意符號”完成填充功能

          這個知識點(diǎn)必須在講完填充和對齊后,才能為大家演示。其實(shí)沒有為什么,就是語法是這樣的,我們就必須這樣做。

          ① %格式化

          舊版語法的%格式化,使用"特定符號"填充,很麻煩,不直接,你也不用去管。這里主要看新版語法中format()格式化和f-string格式化,進(jìn)行"特定符號"填充。

          ② format()格式化
          #?左填充
          a?=?'{:_>10}'.format('黃同學(xué)')
          print(a,len(a))

          #?右填充
          b?=?'{:_<10}'.format('黃同學(xué)')
          print(b,len(b))

          #?居中填充
          c?=?'{:_^10}'.format('黃同學(xué)')
          print(c,len(c))

          結(jié)果如下:

          ③ f-string格式化
          name?=?"黃同學(xué)"

          a?=?f"{name:_>10}"
          print(a,len(a))

          b?=?f"{name:_<10}"
          print(b,len(b))

          c?=?f"{name:_^10}"
          print(c,len(c))

          結(jié)果如下:

          5)與“數(shù)字”相關(guān)的格式化填充技巧

          ① 你有必要了解的知識

          經(jīng)過前面的學(xué)習(xí)和敘述,我們已經(jīng)知道這3種方法,都是完成字符串格式化的操作的,但是為何它們又可以填充數(shù)字呢?

          原因:Python自動幫我們做了一次隱式轉(zhuǎn)換,但是這種隱式轉(zhuǎn)換是需要付出代價的,它會消耗額外的性能,犧牲速度。因此我們有特定的語法去解決這個問題。

          ② %格式化
          • %s表示填充字符串;%d表示填充整數(shù);%f表示填充小數(shù);

          完成整數(shù)的填充:

          #?僅僅使用%s,既可以完成字符串的填充,又可以完成數(shù)字的填充
          a?=?'%s'?%?(3000)
          print(a)

          a1?=?'%s'?%?("3000")
          print(a1)
          #?當(dāng)使用了%d后,只可以填充數(shù)字,不能填充字符串,否則會報錯
          #?使用%d填充整數(shù),是推薦寫法
          b?=?'%d'?%?(3000)
          print(b)

          b1?=?'%d'?%?("3000")
          print(b1)

          結(jié)果如下:

          完成浮點(diǎn)數(shù)的填充:

          a?=?'%.2f'?%?(3.1415926)
          print(a)

          b?=?'%.3f'?%?(3.1415926)
          print(b)

          結(jié)果如下:

          ③ format()格式化

          完成整數(shù)的填充:

          #?不指定d符號,既可以完成字符串的填充,又可以完成數(shù)字的填充
          a?=?'{:$>5}'.format(3000)
          print(a)

          a1?=?'{:$>5}'.format("3000")
          print(a1)
          #?當(dāng)指定了d符號后,只可以填充數(shù)字,不能填充字符串,否則會報錯
          #?使用符號d填充整數(shù),是推薦寫法
          b?=?'{:¥>5d}'.format(3000)
          print(b)

          b1?=?'{:¥>5d}'.format("3000")
          print(b1)

          結(jié)果如下:

          完成浮點(diǎn)數(shù)的填充:

          a?=?'{:.2f}'.format(3.14159268)
          print(a)

          b?=?'{:.3f}'.format(3.14159268)
          print(b)

          結(jié)果如下:

          ④ f-string格式化

          完成整數(shù)的填充:

          num1?=?3000
          num2?=?"3000"
          #?不指定d符號,既可以完成字符串的填充,又可以完成數(shù)字的填充
          a?=?f'{num1}'
          print(a)

          a1?=?f'{num2}'
          print(a1)
          #?當(dāng)指定了d符號后,只可以填充數(shù)字,不能填充字符串,否則會報錯
          #?使用符號d填充整數(shù),是推薦寫法
          b?=?f'{num1:d}'
          print(b)

          b1?=?f'{num2:d}'
          print(b1)

          結(jié)果如下:

          完成浮點(diǎn)數(shù)的填充:

          num?=?3.14159268

          a?=?f'{num:.2f}'
          print(a)

          b?=?f'{num:.3f}'
          print(b)

          結(jié)果如下:

          END





          瀏覽 55
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  亚洲一区二区三区乱伦电影 | 日韩Aⅴ在线 | 久草手机在线播放 | 一区二区三区四区五区在线 | 日韩精品网站 |