寫python在做字串格式化的時候,常常會使用format來達成。一般簡單的format用法,會使用大括弧加數字編號配合引數順序做取代
1 2
| >>> str = "My name is {0}, and I'm {1} years old".format('Tom', 18) "My name is Tom, and I'm 18 years old"
|
在Python3.1開始可以省略數字編號
1 2
| >>> str = "My name is {}, and I'm {} years old".format('Tom', 18) "My name is Tom, and I'm 18 years old"
|
或是使用欄位名稱來取代對應引數
1 2
| str = "My name is {name}, and I'm {age} years old".format(name='Tom', age=18) "My name is Tom, and I'm 18 years old"
|
format可以搭配dict一起使用,將dict傳入並取出其中的value來完成取代
1 2 3
| >>> d = {'name': 'Tom', 'age': 18} >>> str = "My name is {0[name]}, and I'm {0[age]} years old".format(d) "My name is Tom, and I'm 18 years old"
|
既然可以使用dict來結合format做字串取代,所以我們可透過內建的locals()來取得一個儲存當前區域變數的dict,並把區域變數的值帶入fomat來取代對應引數
1 2 3 4
| >>> name = 'Tom' >>> age = 18 >>> str = "My name is {0[name]}, and I'm {0[age]} years old".format(locals()) "My name is Tom, and I'm 18 years old"
|
我們可以再進一步使用拆開映射(maping unpacking)運算來將dic拆開來傳入format,python就會自動填入對應的值
1 2 3 4
| >>> name = 'Tom' >>> age = 18 >>> str = "My name is {name}, and I'm {age} years old".format(**locals()) "My name is Tom, and I'm 18 years old"
|
任何的dict都可以使用,上面的例子可以改寫成
1 2 3
| >>> d = {'name': 'Tom', 'age': 18} >>> str = "My name is {name}, and I'm {age} years old".format(**d) "My name is Tom, and I'm 18 years old"
|
參考資料:
Python Unpacking請參考: 透過*和**來對群集資料Unpacking