詳解Python的字符串格式化
Python在字符串格式化的兩種方式
- %
- format
%,關(guān)于整數(shù)的輸出
- %o:oct 八進(jìn)制
- %d:dec 十進(jìn)制
- %x:hex 十六進(jìn)制
print("整數(shù):%d,%d,%d" % (1, 22.22, 33)) print("整數(shù)不足5位,左邊補(bǔ)空格 %5d " % 22) print("整數(shù)不足5位,左邊補(bǔ)0 %05d " % 22) print("整數(shù)不足5位,右邊補(bǔ)空格 %-5d " % 22, "end") print("八進(jìn)制 %o" % 222) print("十六進(jìn)制 %x" % 12)
執(zhí)行結(jié)果
整數(shù):1,22,33 整數(shù)不足5位,左邊補(bǔ)空格 22 整數(shù)不足5位,左邊補(bǔ)0 00022 整數(shù)不足5位,右邊補(bǔ)空格 22 end 八進(jìn)制 336 十六進(jìn)制 c
- 包含知識點(diǎn) 當(dāng)你有多個(gè)參數(shù)需要格式化輸出的時(shí)候,需要用元組 ;注意不能用列表因?yàn)榱斜硎强勺兊?nbsp;
(1,2,3)
- 若傳入的是浮點(diǎn)數(shù)如
22.55
,最后輸出的是22,不會四舍五入哦 - 若傳入了字符串 ,是會報(bào)錯滴!
'22'
%,關(guān)于浮點(diǎn)數(shù)的輸出
print("浮點(diǎn)數(shù):%f,%f " % (1, 22.22)) print("浮點(diǎn)數(shù)保留兩位小數(shù):%.2f " % 22.222) print("浮點(diǎn)數(shù)保留兩位小數(shù),寬5位,不足補(bǔ)0:%05.2f " % 2.222)
執(zhí)行結(jié)果
浮點(diǎn)數(shù):1.000000,22.220000 浮點(diǎn)數(shù)保留兩位小數(shù):22.22 浮點(diǎn)數(shù)保留兩位小數(shù),寬5位,不足補(bǔ)0:02.22
包含知識點(diǎn)
默認(rèn)保留6位小數(shù),可通過 這種形式指定小數(shù)位,2代表保留兩位 .2f
%,關(guān)于字符串的輸出
print("字符串:%s,%s,%s" % (1, 22.22, [1, 2])) print("字符串不足5位,左邊補(bǔ)空格 %5s " % '2') print("字符串不足5位,右邊補(bǔ)空格 %-5s " % '2', "end") print("字符串寬10位,截取兩位 %10.2s " % "hello.world")
執(zhí)行結(jié)果
字符串:1,22.22,[1, 2] 字符串不足5位,左邊補(bǔ)空格 2 字符串不足5位,右邊補(bǔ)空格 2 end 字符串寬10位,截取兩位 he
包含知識點(diǎn) 可以傳入任意類型的數(shù)據(jù),譬如整數(shù)、浮點(diǎn)數(shù)、列表、元組甚至字典,他都會自動轉(zhuǎn)成字符串類型
format格式化輸出
相對基本格式化輸出采用 % 的方法,format()功能更強(qiáng)大,該函數(shù)把字符串當(dāng)成一個(gè)模板,通過傳入的參數(shù)進(jìn)行格式化,并且使用大括號 {} 作為特殊字符代替 %
format,位置匹配(最常用)
- 不帶編號,即“{}”
- 帶數(shù)字編號,可調(diào)換順序,即“{1}”、“{2}”
- 帶關(guān)鍵字,即“{a}”、“{tom}”
print("今天是{}的{}生日會".format("帥哥", 18)) print("今天是{1}的{0}生日會".format("帥哥", 18)) print("今天是{0}的{1}生日會".format("帥哥", 18)) print("今天是{name}的{key}生日會".format(22, 11, name="帥哥", key=18)) print("今天是{name}的{key}生日會,接著上{}".format("test", name="帥哥", key=18)) # 以下會報(bào)錯 print("今天是{0}的{}生日會".format("帥哥", 18)) print("今天是{name}的{key}生日會,接著上{}".format( name="帥哥", key=18,"test"))
執(zhí)行結(jié)果
今天是帥哥的18生日會 今天是18的帥哥生日會 今天是帥哥的18生日會 今天是帥哥的18生日會 今天是帥哥的19生日會,接著上test
包含知識點(diǎn) 當(dāng)你只寫了 時(shí),默認(rèn)按傳入的值的順序讀取{}
當(dāng)你寫了數(shù)字編號 ,則可以讀取對應(yīng)位置上的值,從0開始{1}
當(dāng)你指定了關(guān)鍵字 ,如果不指定 name=xxx ,則會報(bào)錯{name}
當(dāng)你指定了關(guān)鍵字,又只寫了 時(shí),你傳入帶有關(guān)鍵字指定的值必須寫在后面,類似函數(shù)(形參在前,實(shí)參在后){}
和 {1} 是不能共存的{}
總結(jié)
當(dāng)用到format時(shí),一個(gè)字符串里面的格式化輸出只用一種方式,不要混合使用,容易出問題且沒有必要
format,指定數(shù)據(jù)類型輸出
print("整數(shù){:d}".format(123)) print("浮點(diǎn)數(shù){:5.2f}".format(123.19)) print("字符串{:s}".format('123')) print("八進(jìn)制{:o}".format(12)) print("十六進(jìn)制{:x}".format(13))
執(zhí)行結(jié)果
整數(shù)123 浮點(diǎn)數(shù)123.19 字符串123 八進(jìn)制14 十六進(jìn)制d
包含知識點(diǎn)
- 指定了 ,則只能傳字符串值,如果傳其他類型值不會自動轉(zhuǎn)換
:s
- 當(dāng)你不指定類型時(shí),你傳任何類型都能成功,如無特殊必要,可以不用指定類型
- 如果要結(jié)合數(shù)字編號和關(guān)鍵字使用可以如下
print("關(guān)鍵字 {num:d}".format(num=123)) print("數(shù)字編號 {0:d},{1:s}".format(123, "123"))
執(zhí)行結(jié)果
關(guān)鍵字 123 數(shù)字編號 123,123
format,位數(shù)補(bǔ)齊
print('默認(rèn)左對齊,寬度為10,不足補(bǔ)空格:{:10}'.format("123"), "end") print('左對齊,寬度為10,不足補(bǔ)空格:{:<10}'.format("123"), "end") print('右對齊,寬度為10,不足補(bǔ)空格:{}{:>10}'.format("start", "123")) print('右對齊,寬度為10,取兩位小數(shù),不足補(bǔ)0:{:0>10.2f}'.format(22.22555))
執(zhí)行結(jié)果
默認(rèn)左對齊,寬度為10,不足補(bǔ)空格: 123 end 左對齊,寬度為10,不足補(bǔ)空格:123 end 右對齊,寬度為10,不足補(bǔ)空格:start 123 右對齊,寬度為10,取兩位小數(shù),不足補(bǔ)0:0000022.23
包含知識點(diǎn)
<
默認(rèn)左對齊可以不用就加- 當(dāng)你不指定數(shù)據(jù)類型時(shí),傳什么類型的值都能成功格式化輸出
format,拓展使用
print("總是顯示符號:{:0>+8.2f},{:0>+8.2f}".format(3.14, -3.14)) print("百分?jǐn)?shù):{:%} {:.2%}".format(3 / 7, 3 / 7)) print("逗號分隔,一般用在金錢 {:,}".format(12345678)
執(zhí)行結(jié)果
總是顯示符號:000+3.14,000-3.14 百分?jǐn)?shù):42.857143% 42.86% 逗號分隔,一般用在金錢 12,345,678
+
包含知識點(diǎn) 的意義在于,當(dāng)我們輸出的是正數(shù)也能看到符號
%
百分?jǐn)?shù)是真的百分?jǐn)?shù),不是單單加個(gè) ;譬如0.25667,變成百分?jǐn)?shù)就是 25.67%
固定隔三位數(shù)字;傳入字符串會報(bào)錯哦
到此這篇關(guān)于詳解Python的字符串格式化的文章就介紹到這了,更多相關(guān)Python字符串格式化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Pygame繪制直線實(shí)現(xiàn)光線反射效果
這篇文章主要為大家詳細(xì)介紹了如何利用Python?Pygame繪制直線以實(shí)現(xiàn)光線反射效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11解決Django migrate No changes detected 不能創(chuàng)建表的問題
今天小編就為大家分享一篇解決Django migrate No changes detected 不能創(chuàng)建表的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python&Matlab實(shí)現(xiàn)炫酷的3D旋轉(zhuǎn)圖
這篇文章主要為大家介紹了如何利用Python和Matlab分別實(shí)現(xiàn)酷炫的3D旋轉(zhuǎn)圖,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-04-04python中關(guān)于CIFAR10數(shù)據(jù)集的使用
這篇文章主要介紹了python中關(guān)于CIFAR10數(shù)據(jù)集的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02python計(jì)算最大優(yōu)先級隊(duì)列實(shí)例
python計(jì)算最大優(yōu)先級隊(duì)列實(shí)例,大家參考使用吧2013-12-12pandas apply多線程實(shí)現(xiàn)代碼
這篇文章主要介紹了pandas apply多線程實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python計(jì)算當(dāng)前日期是一年中的第幾天的方法詳解
在Python中,計(jì)算當(dāng)前日期是一年中的第幾天可以通過內(nèi)置的datetime模塊來實(shí)現(xiàn),本文將詳細(xì)介紹如何使用Python編寫代碼來完成這個(gè)任務(wù),需要的可以參考下2023-12-12