如何用{value}替换python / django中三引号中的变量值?

时间:2019-05-19 10:56:45

标签: python django

我是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文档吗?谢谢

1 个答案:

答案 0 :(得分:1)

这只是简单的string formatting [pyformat]。可以按照Python documentationPEP-3101中所述的格式指定字符串,然后通过调用my_string.format(..)将字符串中的某些部分替换为其他部分。

它是“三引号”之间的字符串,这一事实没有任何区别,因为它只是一个字符串。

整个格式在PEP-3101中进行了说明,但是简而言之,如果您编写{var_name},然后使用命名参数.format(var_name=value)对其进行格式化,那么{var_name}将被{{ 1}}。但是,也有一些例外,例如value{{}}取代,并且格式允许您正确对齐数字,等等。

起,人们就可以使用f-strings [real Python]来更有效地进行格式化。