如何在python中格式化字符串的一部分?

时间:2012-03-30 06:06:24

标签: python string

我想做的是:

property = "name"
formatter = "my %s is %s" % property
print formatter % "wong2" // "my name is wong2"

但第一行给出“没有足够的格式字符串参数”错误。

5 个答案:

答案 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')