2017-08-31 34 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的更多信息。