命名替换字段({...}
在零件格式字符串)匹配针对关键字参数的.format()
方法,而不是位置参数。
关键字参数就像字典中的键。顺序无关紧要,因为它们与name匹配。
如果要与位置参数匹配,请使用数字:
"{0} {1}".format(10, 20)
在Python 2.7及更高版本中,您可以省略数字。{}
然后,替换字段将按照格式字符串中出现的顺序自动编号:
"{} {}".format(10, 20)
格式字符串可以与位置参数和关键字参数匹配,并且可以多次使用参数:
"{1} {ham} {0} {foo} {1}".format(10, 20, foo='bar', ham='spam')
引用格式字符串规范:
所述FIELD_NAME本身开始于arg_name要么是数字或关键字。如果是数字,则表示位置参数,如果是关键字,则表示命名关键字参数。
强调我的。
如果要创建较大的格式字符串,则使用命名替换字段通常更易读和可维护,因此您不必继续计算参数并弄清楚什么参数会出现在结果字符串中。
您还可以使用**keywords
调用语法将现有字典应用于某种格式,从而轻松将CSV文件转换为格式化输出:
import csv
fields = ('category', 'code', 'price', 'description', 'link', 'picture', 'plans')
table_row = '''\
<tr>
<td><img src="{picture}"></td>
<td><a href="{link}">{description}</a> ({price:.2f})</td>
</tr>
'''
with open(filename, 'rb') as infile:
reader = csv.DictReader(infile, fieldnames=fields, delimiter='\t')
for row in reader:
row['price'] = float(row['price'])
print table_row.format(**row)
这里picture
,link
,description
且price
是在所有按键row
的字典,这是很容易看个究竟时,我运用row
到格式化字符串。