python格式化輸出%s與format()的用法對比
1、python格式化輸出歷史起源
python2.5之前,我們使用的是老式格式化輸出:%s。從python3.0開始起(python2.6同期發(fā)布),同時(shí)支持兩個版本的格式化,多出來的一個新版本就是利用format()函數(shù),進(jìn)行格式化輸出。
2、為什么要學(xué)習(xí)python3支持的新式格式化輸出呢?
雖然老式的語法,兼容性很好,但是它的功能很少,很難完成復(fù)雜的任務(wù),而format()函數(shù)進(jìn)行格式化輸出,功能更加強(qiáng)大,從下面的學(xué)習(xí)中你會慢慢體會到。
3、基本用法
a = "%s張飛%s關(guān)羽%s劉備%s趙云" % (1,2,3,4) display(a) b = "{}張飛{}關(guān)羽{}劉備{}趙云".format(1,2,3,4) display(b)
結(jié)果如下:
format()支持位置格式化填充,%s不支持;
第一種方式:大括號{ }中寫的是format()傳入值所對應(yīng)的下標(biāo)。第二種方式:大括號{ }中的變量,和format()傳入值是一一對應(yīng)的。
# --------------------方式一----------------------- c = "{3}張飛{1}關(guān)羽{2}劉備{0}趙云".format(1,2,3,4) display(c) # --------------------方式二----------------------- def my_hobbies(fruit,ball,drink): hobbies = "我喜歡水果{fruit},我也喜歡球類{ball},我還喜歡飲料{drink}".format(ball=ball,fruit=fruit,drink=drink) return hobbies fruit = "apple" ball = "basketball" drink = "milk" my_hobbies(fruit,ball,drink) # --------------------方式二----------------------- fruit = "apple" ball = "basketball" drink = "milk" hobbies = "我喜歡水果{fruit},我也喜歡球類{ball},我還喜歡飲料{drink}".format(ball=ball,fruit=fruit,drink=drink) display(hobbies)
結(jié)果如下:
4、填充和對齊
1)填充(只能用一個字符進(jìn)行填充)
① 什么是填充?
概念:當(dāng)指定了字符串最終的長度,但是現(xiàn)有的字符串沒有那么長,那么我們就用某種字符(填充字符)來填滿至這個長度,這就是“填充”。
② %s:實(shí)現(xiàn)填充功能;
a = "%s" % ("張飛") display(a) b = "%10s" % ("張飛") display(b)
結(jié)果如下:
③ format():實(shí)現(xiàn)填充功能;
c = "{}".format("張飛") display(c) d = "{:10}".format("張飛") display(d)
結(jié)果如下:
總結(jié)如下:通過上述案例結(jié)果呈現(xiàn),當(dāng)使用的是%s,進(jìn)行字符串填充的時(shí)候,默認(rèn)是在原字符串左側(cè)進(jìn)行填充;當(dāng)使用的是format(),進(jìn)行字符串填充的時(shí)候,默認(rèn)是在原字符串右側(cè)進(jìn)行填充。這就是我們下面要講述的"對齊"。
2)對齊
① 什么是對齊?
概念:"對齊"要與"填充"一起使用,才會顯得有意義。當(dāng)我們進(jìn)行填充的時(shí)候,我們可以選擇只在字符串左側(cè)填充,也可以選擇只在字符串右側(cè)填充,還可以選擇在字符串兩側(cè)填充(字符串居中顯示的填充方式)。
② %s:實(shí)現(xiàn)對齊功能,只有左對齊和右對齊;
# 左填充 a = '%10s' % ('張飛') display(a) # 右填充 b = '%-10s' % ('張飛') display(b)
結(jié)果如下:
③ format():實(shí)現(xiàn)對齊功能,不僅有左對齊和右對齊,還有居中對齊;
# 左填充 a = '{:>10}'.format('張飛') display(a) # 右填充 b = '{:<10}'.format('張飛') display(b) # 居中填充 c = '{:^10}'.format('張飛') display(c)
結(jié)果如下:
④ 使用"特定符號"進(jìn)行填充;
舊版語法中(%s),使用"特定符號"填充,很麻煩,不直接,你也不用去管。這里主要看新版語法中(format()函數(shù)),進(jìn)行"特定符號"填充。
5、截?cái)?/h2>
概念:如果我們指定的"截?cái)嚅L度",比實(shí)際給出的"字符串"的長度要短,會發(fā)生截?cái)唷?1)長度和截?cái)嚅L度的區(qū)別
① 什么是長度?
“{:8}”.format(“xishi is beautiful”)中,這個8表示的是填充長度,又成為長度,當(dāng)字符串長度小于這個長度8的時(shí)候,會發(fā)生填充;當(dāng)字符串長度大于這個長度8的時(shí)候,長度無效,返回的仍然是原來的字符串。
操作如下:
a = "{:8}".format("xishi") display(a) b = "{:8}".format("xishi is beautiful") display(b)
結(jié)果如下:
② 什么是截?cái)嚅L度?
“{:10.8}”.format(“xishi is beautiful”)中,這個".8"叫做截?cái)嚅L度,這個10叫做填充長度。注意:只有字符串的長度大于這個階段長度的時(shí)候,才會發(fā)生截?cái)?。?dāng)既有截?cái)嚅L度,又有填充長度的時(shí)候一般先進(jìn)行截?cái)?,截?cái)嗪笤龠M(jìn)行填充。
操作如下:
a = "{:.8}".format("xishi is beautiful") display(a) # 當(dāng)字符串長度,小于截?cái)嚅L度,返回原始字符串,截?cái)嚅L度無效; b = "{:.8}".format("abc") display(b)
結(jié)果如下:
③ 填充長度和截?cái)嚅L度的聯(lián)合使用
a = "{:*>15.8}".format("xishi is beautiful") display(a)
結(jié)果如下:
注意:當(dāng)既有截?cái)嚅L度,又有填充長度的時(shí)候一般先進(jìn)行截?cái)?,截?cái)嗪?,再進(jìn)行填充。
④ 使用%s完成截?cái)?/p>
a = "%.8s" % ("xishi is beautiful") display(a) b = "%15.8s" % ("xishi is beautiful") display(b)
結(jié)果如下:
6、格式化輸出中,與數(shù)字相關(guān)的語法
1)引入案例
a = '{}-{}'.format("1","2") display(a) b = '{}-{}'.format(1,2) display(b)
結(jié)果如下:
存在的問題:
2)填充整數(shù),使用d
① 使用%s完成整數(shù)的填充;
a = '%5d' % (3000) display(a) b = '%d' % ("3000") display(b)
結(jié)果如下:
② 使用format()完成整數(shù)的填充;
a = '{:$>5d}'.format(3000) display(a) b = '{:¥>5d}'.format(3000) display(b)
結(jié)果如下:
3)填充浮點(diǎn)數(shù),使用f(這個才是最常用的,用于保留小數(shù)點(diǎn)的位數(shù));
① 引入案例
a = '{:f}'.format(3.14159268) display(a) b = '{:f}'.format(3.1415921) display(b) c = '{:f}'.format(312) display(c) d = '{:d}'.format(12,34) display(d)
結(jié)果如下:
存在的問題:
② 使用%s完成浮點(diǎn)數(shù)填充,保留2位有效數(shù)字;
a = '%.2f' % (3.1415) display(a)
結(jié)果如下:
③ 使用format()完成浮點(diǎn)數(shù)的填充,保留2位有效數(shù)字;
b = '{:.2f}'.format(3.1415) display(b) c = '{:$>5.2f}'.format(3.1415) display(c)
結(jié)果如下:
注意:在使用浮點(diǎn)數(shù)填充的時(shí)候,用的最多的就是保留幾位有效數(shù)字,由于返回值默認(rèn)是保留6位小數(shù),因此需要配合使用"截?cái)?。
以上就是python格式化輸出%s與format()的用法對比的詳細(xì)內(nèi)容,更多關(guān)于python格式化輸出對比的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python+selenium打印當(dāng)前頁面的titl和url方法
今天小編就為大家分享一篇python+selenium打印當(dāng)前頁面的titl和url方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06在服務(wù)器上安裝python3.8.2環(huán)境的教程詳解
這篇文章主要介紹了在服務(wù)器上安裝python3.8.2環(huán)境的教程詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Python讀寫鎖實(shí)現(xiàn)實(shí)現(xiàn)代碼解析
這篇文章主要介紹了Python讀寫鎖實(shí)現(xiàn)實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11PyTorch中Tensor的拼接與拆分的實(shí)現(xiàn)
這篇文章主要介紹了PyTorch中Tensor的拼接與拆分的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Python使用循環(huán)神經(jīng)網(wǎng)絡(luò)解決文本分類問題的方法詳解
這篇文章主要介紹了Python使用循環(huán)神經(jīng)網(wǎng)絡(luò)解決文本分類問題的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python神經(jīng)網(wǎng)絡(luò)相關(guān)概念、原理及解決文本分類具體操作技巧,需要的朋友可以參考下2020-01-01詳解Anconda環(huán)境下載python包的教程(圖形界面+命令行+pycharm安裝)
這篇文章主要介紹了Anconda環(huán)境下載python包的教程(圖形界面+命令行+pycharm安裝),這篇文章很適合小白入手級別的,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11