2016-12-19 144 views
3

這個問題已經回答過了,但我的字符串沒有任何額外的大括號那會弄亂格式,所以此刻的我,爲什麼錯誤Python中的String.Format KeyError異常

完全無能

錯誤是KeyError異常:內容

html = """ 
    <table class=\"ui celled compact table\" model=\"{model}\"> 
     {theaders} 
     <tbody> 
      {content} 
     </tbody> 
    </table> 
    """ 
html = html.format(model=model) 
html = html.format(content=data) 
html = html.format(theaders=theaders) 
+2

*旁白*:本例中不需要反斜槓。三重引用一個字符串的好處之一是任何單獨的引用字符不再是特殊的。 –

+0

我只是做了他們,試圖找出錯誤的一部分:) – Mojimi

回答

10

你可以通過線做線唱歌**

d=dict() 
d['model']=model 
d['content']=data 
d['theaders']=theaders 

html = html.format(**d) 
7

您需要填寫一氣呵成值:使用字典和傳遞字典作爲關鍵字參數ü

html.format(model=model, content=data, theaders=theaders) 
+0

有沒有辦法做到這一點的部分? – Mojimi

+1

@Mojimi不直接通過['str.format()'](https://docs.python.org/2/library/stdtypes.html#str.format)。 [模板字符串](https://docs.python.org/2/library/string.html#string.Template)使用['safe_substitute()'](https://docs.python.org/2 /library/string.html#string.Template.safe_substitute),但使用不同的佔位符語法。但你爲什麼需要它? – dhke

+1

是的,你可以。你需要用「雙括號」包圍「content」;帶有四個括號('{model} ... {{content}} .. {{{theaders}}}}'的'theaders'。有點黑客... –