我想做的是:
property = "name"
formatter = "my %s is %s" % property
print formatter % "wong2" // "my name is wong2"
但第一行给出“没有足够的格式字符串参数”错误。
答案 0 :(得分:4)
>>> property = "name"
>>> formatter = "my %s is %%s" % property
>>> print formatter % "wong2"
my name is wong2
答案 1 :(得分:3)
格式化后,百分之二将创建一个百分号:
formatter = "my %s is %%s"
答案 2 :(得分:1)
你可以通过加倍来转义格式化程序
formatter = "my %s is %%s" % property
您也可以使用按名称而不是位置格式同时进行所有替换:
formatter = "my %(property)s is %(name)s"
print formatter % { "property": "name",
"name": "wong2" }
这种形式允许可变数量的替换(即,不需要使用字典中的所有键并且可以多次使用它们)。例如,如果从配置文件中读取格式字符串,则这很重要。
答案 3 :(得分:1)
使用辅助类
这是一种有趣的方法>>> property = "name"
>>> class D(dict):
... def __missing__(self, key):
... return "%("+key+")s"
...
>>> formatter = "my %(property)s is %(value)s"%D(property=property)
>>> formatter%D(value="wong2")
'my name is wong2'
答案 4 :(得分:1)
我个人不喜欢%
格式化语法,因此我建议使用format
语法与之前的答案完全相同:
property = 'name'
formatter = "my {} is {{}}".format(property) #=> "my name is {}"
print formatter.format('wong')