2017-08-31 57 views

回答

6

您需要通过名称.format(a=123)在参数传递或使用format_map其预计的字典:

s = """ 
a b c {a} 
""".format_map({'a':'123'}) 
+0

我从来不知道'format_map' O.o很高兴知道! – Wondercricket

+0

如果映射只是一个普通的字典,那么使用'format_map'就没什么意义了。 – wim

+0

@wim这是正确的,但如果你有一个字典,为什么解开它并将它传递给格式,当你也可以使用'format_map'? – MSeifert

3

命名格式变量必须通过名字传递:

>>> s = """ 
... a b c {a} 
... """.format(a=123) 
>>> print(s) 

a b c 123 

如果您提供的数据的字典,您可以“解开”名称:

>>> d = {'a': 123} 
>>> s = """ 
... a b c {a} 
... """.format(**d) 
>>> print(s) 

a b c 123 
+2

如果你使用Python 3.6,另一个选择是使用f-字符串。 –

+2

这只是一个选项,如果数据来自范围内的名称。 – wim

1

您正在使用字符串format方法不正确。 format要求您在要替换字符串内的名称时传递关键字参数。

正确的形式来使用你的情况的方法是如下:

s = """ 
a b c {a} 
""".format(a='123') 

print s 

但是,如果你想在字典中传递,那么你可以通过之前的前面加上**解压到关键字参数字典本身。这将像上面的代码一样将字典解压缩到a='123'的关键字参数中。

请阅读有关Python字符串和字符串格式方法here的更多信息。