python學習筆記之基礎操作(五)字串格式化(2)format
阿新 • • 發佈:2018-12-15
format格式化
1,基本格式
#對於每一個大括號,在後面的引數中找到對應的引數插進來
#format操作類似於於將傳入的引數製成多個數據的資料結構元組或者字典,然後依照索引插入引數
s = "i am {},i am {} years old ,i like {}".format("haiyang",20,"zhu")
print(s)
s = "i am {},i am {} years old ,i like {}".format("haiyang","20","zhu")
print(s)
i am haiyang,i am 20 years old ,i like zhu i am haiyang,i am 20 years old ,i like zhu
2,定義變數的索引
s = "i am {2},i am {1} years old ,i like {0}".format("haiyang",20,"zhu")
print(s)
i am zhu,i am 20 years old ,i like haiyang
3,定義變數名稱
#類似於索引,只不過這裡的索引變成了自定義的索引,不再是0-...因此需要傳入字典
s = "i am {name},i am {age} years old ,i like {girl}".format(name="haiyang",age=20,girl="zhu")
print(s)
i am haiyang,i am 20 years old ,i like zhu
4,控制輸出長度和格式
s = "i am {:.2s},i am {:d} years old ,i like {:.2f}".format("haiyang",20,22.231231321)
print(s)
i am ha,i am 20 years old ,i like 22.23
5,格式化傳入資料的格式需求
在format等類似的函式中,會預設你傳入的是一組資料,
但是如果你直接將一組資料製成連結串列形式的資料格式傳入,則需要通知
比如第一種,需要傳入的資料類似於元組,如果想直接傳入一個元組,則需要用*標識,否則會報錯
tmp = ("haiyang",20,"zhu")
s = "i am {},i am {} years old ,i like {}".format(*tmp)
print(s)
s = "i am {},i am {} years old ,i like {}".format(tmp)
print(s)
i am haiyang,i am 20 years old ,i like zhu
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-5-bfc251778bb3> in <module>()
4 s = "i am {},i am {} years old ,i like {}".format(*tmp)
5 print(s)
----> 6 s = "i am {},i am {} years old ,i like {}".format(tmp)
7 print(s)
IndexError: tuple index out of range
如果需要傳入字典而你已經把字典做好了,就需要用**標識一下,否則也會報錯
dic = {"name":"haiyang","age":20,"girl":"zhu"}
s = "i am {name},i am {age} years old ,i like {girl}".format(**dic)
print(s)
s = "i am {name},i am {age} years old ,i like {girl}".format(dic)
print(s)
i am haiyang,i am 20 years old ,i like zhu
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-9-ffa4c40a411c> in <module>()
3 s = "i am {name},i am {age} years old ,i like {girl}".format(**dic)
4 print(s)
----> 5 s = "i am {name},i am {age} years old ,i like {girl}".format(dic)
6 print(s)
KeyError: 'name'