1. 程式人生 > >python學習筆記之基礎操作(五)字串格式化(2)format

python學習筆記之基礎操作(五)字串格式化(2)format

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'