亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

Python中使用format()函數格式化字符串

2023-04-25 12:32:02
字體:
來源:轉載
供稿:網友

Python中format()函數的作用是對字符串執行格式化操作。

format()函數的語法格式

format()函數的語法形式如下所示:

str.format(*args, **kwargs)

str是待格式化的字符串,一般這個字符串中應包含一對英文半角的花括號{ },用于指定位置索引、參數名或其它格式符,花括號處的內容將被替換成位置索引或參數名及其它格式符指定的值,這些值來自format()函數的參數指定的值序列。

args參數用于給定值序列,用于替換str中{}里位置索引處的值。

kwargs參數以關鍵字參數(即keyargs = value)的形式給出格式字符串中的值。

Python中format()函數使用詳解

下面先給出一個簡單的例子來看看該函數的基本使用方法:

weburl = "http://www.49028c.com"
webname = "武林網VEVB"
webinfo = "{0}的網址是:{1}".format(webname, weburl)
print(webinfo)

輸出結果如下:

武林網VEVB的網址是:http://www.49028c.com在Python3.8.2中的代碼及輸出情況如下圖所示:

在 這個例子中,{0}和{1}分別用來指定參數列表中的webname和weburl來替換{0}和{1}處的內容,這從輸出結果也可以看出來。

下面從字符串和參數等角度分別給出若干例子來探討format()函數在實際中使用的情形。

基于位置索引的字符串格式化

print("今天的值日生是{0}".format("王濤"))
print("今天的一對新人是{0}和{1}".format("韓梅梅","李明"))
print("我們學習的編程語言有:{}、{}".format("Python","Java"))
print("請{1},{2},{0}來辦公室一趟".format("A","B","C"))

輸出結果如下:

今天的值日生是王濤
今天的一對新人是韓梅梅和李明
我們學習的編程語言有:Python、Java
請B,C,A來辦公室一趟

從上面的例子可以看出,在指定索引的替換串中,替換位置的值將按照索引使用參數對應的值來完成替換。

如果在替換字符串中未指定索引值,其按照{}出現的順序來編索引,即按照0,1,...,n來編索引。

替換字符串中的索引沒有先后順序之分,如上面最后一個例子就演示了這一點。

參數的個數可以多于替換字符串中需要的值,但在未提供索引時,參數給定的值個數不能少于需替換的位置數量。

下面這個例子可以得出正確結果:

print("我正在學習{1}".format("Java", "Python", "C#"))

輸出結果為:

我正在學習Python

但下面這種情況不允許

print("我學習的語言有{},{}和{}".format("Java", "Python"))

由于沒給定索引,默認其編號分別為0,1 和 2,而參數在兩個的情況下最大編號為1,這就超出了索引范圍而引發IndexError錯誤:

Traceback (most recent call last):
   File "D:/01Lesson/PY/pythonformat.py", line 12, in <module>
      print("我學習的語言有{},{}和{}".format("Java", "Python"))
IndexError: Replacement index 2 out of range for positional args tuple

當然下面這種指定索引的情況是可以的

print("我一直在學習{0},{0} ......".format("Python"))

輸出結果:

我一直在學習Python,Python ......

關鍵詞參數

 在format()函數中也可以使用關鍵詞參數來格式化字符串。即在format()函數的參數列表中,使用給參數賦值的方法來定義值列表,并在格式化字符串中使用參數名來傳遞值。其形式為:

"{var1}{var2}...".format(var1 = value1, var2 = value2, ...)

下面給出一個具體的例子:

formatedstr = "{webname}的網址是:{weburl}".format(webname = '武林網VEVB',
                                   weburl = 'http://www.49028c.com')
print(formatedstr)

輸出結果如下:

武林網VEVB的網址是:http://www.49028c.com

字典數據作為format函數的參數

在Python中,可以把字典數據作為參數傳遞給format()函數,用于格式化字符串,其形式如下:

"{key}".format(**dict)

將被格式化的字符串{}中的key即是字典中的key,format函數將會把dictkey對應的值替代{}位置中的內容。

dict即使字典變量或字典數據。

為了使用key對應的值來替代key對應的值,函數在執行時需要解包字典中的數據,Python中的"**"操作符就是用來解包字典中的數據的。

換句話說:**就是把字典型數據解析成關鍵字型參數,如字典{"arg1":"v1", "arg2":"v2"}作為參數傳遞給format函數的話,其將該字典解析為:arg1="v1",arg2="v2"這樣的關鍵字參數。

下面舉一個例子來說明其具體用法:

dict1 = {"lang1":"Python", "lang2":"Java", "lang3":"R"}
popularlang = "我喜歡{lang1}和{lang3}".format(**dict1)
print(popularlang)

輸出結果如下:

我喜歡Python和R

上面的函數調用相當于:

popularlang = "我喜歡{lang1}和{lang3}".format(lang1 = "Python", lang2 = "Java", lang3 = "R")

元組或列表作為format()函數的參數

元組或列表型數據也可以作為format()函數的參數,其語法格式如下:

"{index1}{index2}...".format(*tupleorlist)

上面語法中index1index2表示引用元組或列表的位置索引,即使用元組或列表中該位置處的值來替換{}處的內容。

tupleorlist即是傳遞的元組或列表數據或變量。

*”操作符用于解包元組或列表中的數據,也就是說*在這里把元組或列表這樣的序列數據解析成位置參數。

下面舉例子說明:

#元組作為參數
t1 = ("Python", "Java", "SPSS")
print("我正在學習{0}和{2}".format(*t1))
print("小明正在學習{2}和{0}".format(*t1))

#列表作為參數
list1 = ["HTML", "CSS", "JavaScript"]
print("{0}非常簡單".format(*list1))
print("{2},{1}和{0}都很簡單。".format(*list1))

輸出結果如下:

我正在學習Python和SPSS
小明正在學習SPSS和Python
HTML非常簡單
JavaScript,CSS和HTML都很簡單。

上面使用*調用的元組參數相當于:

print("我正在學習{0}和{2}".format("Python", "Java", "SPSS"))

對于元組或列表這種序列值也可以使用下面的格式實現字符串的格式化:

#元組
t1 = ("Python", "Java", "SPSS")
print("我在學習{0[0]}和{0[2]}".format(t1))

#列表
list1 = ["Python", "Java", "SPSS"]
list2 = ["HTML", "CSS", "JavaScript"]
print("我在學習{0[1]}和{1[2]}".format(list1, list2))

#混用
list1 = ["Python", "Java", "SPSS"]
print("我學過{0[2]},{1}和{2}".format(list1,"C++", "sqlite"))

輸出結果如下:

我在學習Python和SPSS
我在學習Java和JavaScript
我學過SPSS,C++和sqlite

上面格式化字符串中使用了兩個索引,因為format()函數允許傳遞多個參數,當參數為多個且為序列值時,第一個索引用于指定參數所在的位置索引,第2個用于指定序列值中的元素位置,上面用三個例子來演示了使用方法來揭示其中的奧秘,讀者可以自己分析一下。

類的對象作為參數

對象類型也可以作為format函數的參數,使用成員運算符“.”來訪問對象中的數據。

###對象作為參數

#首先定義一個類
class Student:
    sid = ''
    sname = ''
    age = 20
    def __init__(self, sid):
        self.sid = sid

#定義一個類的對象
stu1 = Student("001")
stu1.sname = "王濤"
stu1.age = 22

print("{0.sname}的學號是{0.sid},年齡是{0.age}".format(stu1))
print("{stu.sname}的學號是{stu.sid},年齡是{stu.age}".format(stu = stu1))

上面的程序輸出結果如下:

王濤的學號是001,年齡是22
王濤的學號是001,年齡是22

上面程序中給出了兩種引用對象中屬性的方法:第一種使用0表示參數的位置索引,第二種使用了關鍵字參數的形式。

format()函數使用總結

被格式化字符串{}中的內容為空時,則按照其出現的順序默認使用0,1,2...來表明其引用的參數索引,并用參數對應的值來替換;

被格式化字符串{}中為數值索引時,將使用參數列表中對應位置的值來替換;

被格式化字符串{}中為關鍵字名稱時,則使用參數列表中對應的關鍵字名稱的值來替換;

函數參數為元組、列表等這樣的值時,在函數調用時,其參數要使用str.format(*t)這種格式;

函數參數為詞典這樣的值時,在函數調用時,其參數要使用str.format(**dict)這種格式。

這篇文章僅介紹了被格式化字符串和參數之間的對應問題,沒有涉及到字符串的其他格式,如輸出數字的格式,字符串對齊等格式,本站將在今后的文章中作進一步的介紹。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品女人网站| 色婷婷综合久久久久中文字幕1| 久久久精品日本| 国产精品女人久久久久久| 国产亚洲精品91在线| 中文字幕av一区二区| 精品国产999| 国产亚洲精品va在线观看| 91精品国产91久久久久久吃药| 久久久av亚洲男天堂| 欧美性生交xxxxx久久久| 欧美亚洲在线观看| 日本久久久久久| 日韩av中文字幕在线| 亚洲一区二区久久| 精品久久香蕉国产线看观看亚洲| 久久久久久国产精品三级玉女聊斋| 成人深夜直播免费观看| 大量国产精品视频| 国产精品免费观看在线| 免费av一区二区| 亚洲aⅴ男人的天堂在线观看| 欧美高跟鞋交xxxxhd| 欧美激情国产精品| 国产99在线|中文| 久操成人在线视频| 欧洲精品毛片网站| 久久久亚洲精品视频| 久久天天躁狠狠躁夜夜爽蜜月| 91成品人片a无限观看| 中文字幕日韩在线观看| 超在线视频97| 欧美大尺度在线观看| www.日韩不卡电影av| 中日韩午夜理伦电影免费| 亚洲人成网站色ww在线| 亚洲黄一区二区| 精品久久久久久久久久国产| 日本久久精品视频| 欧美二区乱c黑人| 岛国av一区二区在线在线观看| 国产欧美日韩中文| 久久精品福利视频| 久久久久久网址| 色伦专区97中文字幕| 尤物精品国产第一福利三区| 国产欧美日韩亚洲精品| 亚洲欧美三级伦理| 欧美大尺度激情区在线播放| 久久亚洲一区二区三区四区五区高| 岛国视频午夜一区免费在线观看| 欧美亚洲另类视频| 亚洲人精选亚洲人成在线| 亚洲第一网中文字幕| 亚洲美女av在线播放| 欧美日韩精品在线观看| 91精品久久久久| 日韩激情av在线免费观看| 日韩在线视频网站| 国产最新精品视频| 久久视频免费在线播放| 91午夜理伦私人影院| 日韩经典一区二区三区| 欧美日韩免费看| 一本色道久久88综合日韩精品| 亚洲精品狠狠操| 国产精品91久久久久久| 亚洲人成网站免费播放| 国模精品视频一区二区| 91产国在线观看动作片喷水| 精品夜色国产国偷在线| 黄网动漫久久久| 国内精品免费午夜毛片| 欧美午夜宅男影院在线观看| 欧美精品成人91久久久久久久| 91精品国产色综合| 欧美激情一区二区三级高清视频| 欧美性猛交99久久久久99按摩| 欧美在线视频免费| 欧美另类xxx| 深夜福利日韩在线看| 国产精品美女免费视频| 久久理论片午夜琪琪电影网| 98视频在线噜噜噜国产| 国产精品老女人视频| 欧美日韩国产丝袜另类| 国产精品扒开腿做爽爽爽男男| 欧美国产亚洲精品久久久8v| 亚洲另类图片色| 亚洲人成电影在线| 国产91精品黑色丝袜高跟鞋| 日韩第一页在线| 中文字幕精品久久| www日韩欧美| 色噜噜久久综合伊人一本| 91色精品视频在线| 97精品伊人久久久大香线蕉| 国产精品网站视频| 欧美一级在线播放| 亚洲精品久久久久久久久久久久久| 日韩高清电影好看的电视剧电影| 国产一区二区三区视频在线观看| 中文字幕日韩免费视频| 亚洲精品一区中文| 亚洲男人天堂2019| 日本19禁啪啪免费观看www| 亚洲第一天堂av| 久久免费精品日本久久中文字幕| 国产精品高潮呻吟久久av黑人| 国产一区玩具在线观看| 色综合久久悠悠| 久久久91精品国产一区不卡| 久久久久久国产精品三级玉女聊斋| 欧美丝袜一区二区三区| 亚洲女人天堂色在线7777| 2018国产精品视频| 欧洲成人在线视频| 日本免费久久高清视频| 中文字幕亚洲欧美日韩2019| 成人福利在线观看| 欧洲永久精品大片ww免费漫画| 国产欧美欧洲在线观看| 一本色道久久88精品综合| 精品亚洲va在线va天堂资源站| 欧美日韩在线看| 国产午夜精品一区理论片飘花| 日本久久久a级免费| 国内精品中文字幕| 久久噜噜噜精品国产亚洲综合| 国产精品吹潮在线观看| 国产精品久久久久秋霞鲁丝| 青草成人免费视频| 自拍偷拍亚洲精品| 日韩在线观看免费高清| 亚洲精品动漫久久久久| 亚洲在线视频福利| 欧美一区二区三区……| 欧美日韩xxx| 色综合视频一区中文字幕| 国产欧美最新羞羞视频在线观看| 国产精品久久久av久久久| 最近2019免费中文字幕视频三| 精品亚洲一区二区| 精品久久久久久电影| 在线视频日韩精品| 国产精品久久久久久久美男| 夜夜躁日日躁狠狠久久88av| 欧美精品久久久久久久| 欧美国产日韩二区| 欧美极度另类性三渗透| 欧美电影免费观看电视剧大全| 中文字幕久精品免费视频| 欧美黄色三级网站| 国产美女精品免费电影| 51ⅴ精品国产91久久久久久| 国产精品视频一| 国产精品视频不卡| 亚洲女人天堂av| 久久成年人视频| 日韩国产欧美精品一区二区三区| 不用播放器成人网| 久久久黄色av| 日韩激情视频在线播放| 最好看的2019的中文字幕视频|