我是django / python中的菜鸟,我在github中看到了有关“导出Vcard”文件的代码,我的问题是程序员替换字符串变量中的变量值的部分:
admin.py:
output = ""
for person in queryset.all():
person_output = """BEGIN:VCARD
VERSION:3.0
N:{last_name};{first_name}
FN:{first_name} {last_name}
TEL;TYPE=HOME,VOICE:{phone}
TEL;TYPE=WORK,VOICE:{secondary_phone}
EMAIL:{email}
REV:{rev}
END:VCARD"""
# how can replace value when the source is string?!
person_output = person_output.format(
first_name = person.first_name,
last_name = person.last_name,
phone = person.phone,
secondary_phone = person.secondary_phone,
email = person.email,
rev = d.strftime('%Y%M%d%H%f'),
)
任何人都可以解释它如何实现并让我知道有关它的任何python / django文档吗?谢谢
答案 0 :(得分:1)
这只是简单的string formatting [pyformat]。可以按照Python documentation和PEP-3101中所述的格式指定字符串,然后通过调用my_string.format(..)
将字符串中的某些部分替换为其他部分。
它是“三引号”之间的字符串,这一事实没有任何区别,因为它只是一个字符串。
整个格式在PEP-3101中进行了说明,但是简而言之,如果您编写{var_name}
,然后使用命名参数.format(var_name=value)
对其进行格式化,那么{var_name}
将被{{ 1}}。但是,也有一些例外,例如value
被{{}}
取代,并且格式允许您正确对齐数字,等等。
自python-3.6起,人们就可以使用f-strings [real Python]来更有效地进行格式化。