詳解Python中的format格式化函數(shù)的使用方法
format函數(shù)實(shí)現(xiàn)字符串格式化的功能
基本語(yǔ)法為:
通過(guò) : 和 {} 來(lái)控制字符串的操作
一、對(duì)字符串進(jìn)行操作
1. 不設(shè)置指定位置,按默認(rèn)順序插入
①當(dāng)參數(shù)個(gè)數(shù)等于{}個(gè)數(shù)的時(shí)候
str_1 = "小明{}小美,可是小美{}小明".format("喜歡", "不喜歡") print(str_1)
運(yùn)行結(jié)果:
②當(dāng)參數(shù)個(gè)數(shù)大于{}個(gè)數(shù)的時(shí)候
str_1 = "小明{}小美,可是小美{}小明".format("喜歡", "不喜歡", "也不喜歡", "更不喜歡") print(str_1)
運(yùn)行結(jié)果:
③當(dāng)參數(shù)個(gè)數(shù)習(xí)小于{}個(gè)數(shù)的時(shí)候
str_1 = "小明{}小美,可是小美{}小明".format("喜歡") print(str_1)
運(yùn)行結(jié)果:
程序會(huì)報(bào)錯(cuò):越界
由此可以得出,當(dāng)我們不指定參數(shù)位置的時(shí)候,format函數(shù)會(huì)幫我們按順序?qū)⑵浣邮盏降膮?shù),填入到{}中。
2. 設(shè)置指定位置
當(dāng)format接收到的參數(shù)個(gè)數(shù)大于{}或者我們想將不同{}替換為相同字符串的時(shí)候,我們可以在{}內(nèi)指定接收第幾個(gè)參數(shù)。format接收的參數(shù),從0開(kāi)始。
str_1 = "小明{1}小美,可是小美{3}小明,小美{0}小明,小美{2}小華".format("不喜歡", "喜歡", "更喜歡", "很討厭") print(str_1)
在這一句代碼中,分別為不同的{}指定了接收的參數(shù)位置。
運(yùn)行結(jié)果:
很顯然,如果我們的{}的個(gè)數(shù)小于format的參數(shù)也是OK的。
str_1 = "小明{1}小美,可是小美{3}小明,小美{2}小華".format("不喜歡", "喜歡", "更喜歡", "很討厭") print(str_1)
運(yùn)行結(jié)果:
由此我們得出結(jié)論:
在使用format()函數(shù)的時(shí)候,我們給format()的個(gè)數(shù)是不限的,如果我們并沒(méi)有在{}中指定位置,那么format()會(huì)自動(dòng)按順序?qū)?shù)填入{},而如果我們?yōu)閧}指定了位置,那么format()就會(huì)把指定位置的參數(shù)填入對(duì)應(yīng)的{}中。
3.設(shè)置format()參數(shù)的值①直接在format()中進(jìn)行賦值
str_1 = "博主:{name}, 博客地址:{url}".format(name="KaiSarH", url="https://blog.csdn.net/KaiSarH")
運(yùn)行結(jié)果:
②通過(guò)傳遞多值參數(shù)向format傳遞參數(shù)進(jìn)而對(duì){}進(jìn)行賦值
關(guān)于多值參數(shù),可以看一下Python學(xué)習(xí)筆記之函數(shù)的參數(shù)和返回值
- 使用**傳遞字典。
在Python中,使用**可以傳遞一個(gè)字典參數(shù),我們可以使用鍵名進(jìn)行匹配,進(jìn)而進(jìn)行賦值
dict_1 = {"name": "KaiSarH", "url": "https://blog.csdn.net/KaiSarH"} str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1)
運(yùn)行結(jié)果:
我們向format()傳遞的字典參數(shù),所包含的鍵值對(duì),必須包含所有的{}名。只能多(正確),不能少(報(bào)錯(cuò))。
dict_1 = {"name": "KaiSarH", "url": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1) print(str_2) dict_1 = {"name": "KaiSarH", "key": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_4 = "博主:{name}, 博客地址:{url}".format(**dict_1) print(str_4)
運(yùn)行結(jié)果:
注意:我們可以向format()中傳遞多個(gè)字典,但是不可以含有相同鍵。
dict_1 = {"name": "KaiSarH", "url": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1) dict_2 = {"name": "KaiSarH", "key": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_4 = "博主:{name}, 博客地址:{url}".format(**dict_1, **dict_2) print(str_4)
運(yùn)行結(jié)果:
- 傳遞列表
list_1 = ["KaiSarH","https://blog.csdn.net/KaiSarH"] str_3 = "博主:{0[0]}, 博客地址:{0[1]}".format(list_1)
運(yùn)行結(jié)果:
除了傳遞一個(gè)列表,我們也可以向format()中傳遞多個(gè)列表,只需保證取值的時(shí)候無(wú)誤就可以。
list_1 = ["ZhangSan","https://blog.csdn.net/KaiSarH"] list_2 = ["KaiSarH", "http:www.baidu.com"] str_3 = "博主:{1[0]}, 博客地址:{0[1]}".format(list_1, list_2)
運(yùn)行結(jié)果:
③向format()中傳入對(duì)象,進(jìn)行賦值
與列表相同,我們同樣可以向format()中傳遞多個(gè)對(duì)象,只要在賦值的之后做好對(duì)應(yīng)就可以。
class Dog: def __init__(self, name): self.name = name class Mouse: def __init__(self, name): self.name = name tom = Dog("Tom") jerry = Mouse("Jerry") str_1 = "{0.name} want to eat {1.name}".format(tom, jerry) print(str_1)
運(yùn)行結(jié)果:
二、對(duì)數(shù)字進(jìn)行格式化
對(duì)于數(shù)字的格式化,我們主要是在{}中進(jìn)行設(shè)置格式化數(shù)字的多種方法
1.保留小數(shù)點(diǎn)后n位
格式:{:.nf}
print(" {:.1f}".format(3.1415926535)) print(" {:.3f}".format(3.1415926535)) print(" {:.4f}".format(3.1415926535)) print(" {:.6f}".format(3.1415926535))
運(yùn)行結(jié)果:
2.帶符號(hào)保留小數(shù)點(diǎn)后n位
格式:{:+.nf}
print(" {:+.1f}".format(3.1415926535)) print(" {:+.3f}".format(-3.1415926535)) print(" {:+.4f}".format(3.1415926535)) print(" {:+.6f}".format(-3.1415926535))
運(yùn)行結(jié)果:
{:.nf}和 {:+.nf}的區(qū)別
負(fù)數(shù)無(wú)區(qū)別,整數(shù)有無(wú)符號(hào)。
print(" {:.1f}".format(3.1415926535)) print(" {:+.1f}".format(3.1415926535)) print(" {:.3f}".format(-3.1415926535)) print(" {:+.3f}".format(-3.1415926535)) print(" {:.4f}".format(3.1415926535)) print(" {:+.4f}".format(3.1415926535)) print(" {:.7f}".format(-3.1415926535)) print(" {:+.7f}".format(-3.1415926535))
運(yùn)行結(jié)果:
3.不帶小數(shù)(只保留整數(shù))
格式:{:.0f}
print(" {:.0f}".format(3.1415926535)) print(" {:.0f}".format(-3.1415926535)) print(" {:.0f}".format(3.8415926535))
運(yùn)行結(jié)果:
4.如果整數(shù)的位數(shù)不足n位,在左邊進(jìn)行數(shù)字補(bǔ)零。如果已經(jīng)夠了n位,直接輸出
格式:{:0>nd}
print(" {:0>2d}".format(5)) print(" {:0>3d}".format(5)) print(" {:0>5d}".format(123456))
運(yùn)行結(jié)果:
5.如果整數(shù)的位數(shù)不足n位,在右邊進(jìn)行x補(bǔ)充。如果已經(jīng)夠了n位,直接輸出
格式:{:x<4d}
print("{:x<2d}".format(5)) print("{:x<3d}".format(5)) print("{:x<4d}".format(123456))
運(yùn)行結(jié)果:
很顯然,在補(bǔ)充操作中,我們既可以指定在哪一邊補(bǔ)充,也可以指定補(bǔ)充的值為什么。
我們也可以利用print("{:x>.2f}".format(3.1))或者{:x<.2f}對(duì)浮點(diǎn)數(shù)進(jìn)行操作
6.以逗號(hào)分隔數(shù)字格式,每三位加入一個(gè),
格式:{:,}
print(" {:,}".format(314156926))
運(yùn)行結(jié)果:
7.百分比格式(在我理解,就是把數(shù)字×100,保留兩位數(shù)字,然后加一個(gè)百分號(hào))
格式:{:.2%}
print("{:.2%}".format(0.27896))
運(yùn)行結(jié)果:
8.指數(shù)記法
格式:{:.2e}
print("{:.2e}".format(100))
運(yùn)行結(jié)果:
9.右對(duì)齊(默認(rèn)寬度為10)
格式:{:>10d}
print(" {:>10d}".format(100)) print(" {:>10d}".format(2)) print(" {:>10d}".format(12580))
運(yùn)行結(jié)果:
10.左對(duì)齊(默認(rèn)寬度為10)
格式:{:<10d}
print("{:<10d}".format(100)) print("{:<10d}".format(2)) print("{:<10d}".format(12580))
運(yùn)行結(jié)果:
11.中間對(duì)齊(默認(rèn)寬度為10)
格式:{:^10d}
print("{:^10d}".format(100)) print("{:^10d}".format(2)) print("{:^10d}".format(12580))
運(yùn)行結(jié)果:
12.進(jìn)制——b、d、o、x 分別是二進(jìn)制、十進(jìn)制、八進(jìn)制、十六進(jìn)制。
格式:
‘{:b}'.format(11)
‘{:d}'.format(11)
‘{:\o}'.format(11)
‘{:x}'.format(11)
‘{:#x}'.format(11)
‘{:#X}'.format(11)
print("{:b}".format(125)) print("{:d}".format(125)) print("{:o}".format(125)) print("{:x}".format(125)) print("{:#x}".format(125)) print("{:#X}".format(125))
運(yùn)行結(jié)果:
當(dāng)我們?cè)诟袷交?,傳入的參?shù)中包含{}的時(shí)候,我們可以用{}進(jìn)行轉(zhuǎn)義。
當(dāng)我們直接在format()中對(duì)參數(shù)進(jìn)行賦值的時(shí)候,我們必須要把對(duì)參數(shù)的賦值放在最后
print("{name}對(duì)應(yīng)的位置是{{0}},{}對(duì)應(yīng)的位置是{{1}}".format("489", "zhangsan", name="123"))
運(yùn)行結(jié)果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中的函數(shù)參數(shù)類(lèi)型檢查
這篇文章主要介紹了Python中的函數(shù)參數(shù)類(lèi)型檢查,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12解決Python3下map函數(shù)的顯示問(wèn)題
今天小編就為大家分享一篇解決Python3下map函數(shù)的顯示問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Keras目標(biāo)檢測(cè)mtcnn?facenet搭建人臉識(shí)別平臺(tái)
這篇文章主要為大家介紹了Keras目標(biāo)檢測(cè)mtcnn?facenet搭建人臉識(shí)別平臺(tái),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05python通過(guò)實(shí)例講解反射機(jī)制
這篇文章主要介紹了python通過(guò)實(shí)例講解反射機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Python3.x爬蟲(chóng)下載網(wǎng)頁(yè)圖片的實(shí)例講解
今天小編就為大家分享一篇Python3.x爬蟲(chóng)下載網(wǎng)頁(yè)圖片的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Python獲取網(wǎng)頁(yè)數(shù)據(jù)詳解流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python來(lái)獲取網(wǎng)頁(yè)的數(shù)據(jù),主要應(yīng)用了Requests庫(kù),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-10-10python目標(biāo)檢測(cè)非極大抑制NMS與Soft-NMS
這篇文章主要weidajia?介紹了python目標(biāo)檢測(cè)非極大抑制NMS與Soft-NMS實(shí)現(xiàn)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05