【问题标题】:Python format throws KeyErrorPython 格式抛出 KeyError
【发布时间】:2012-03-26 06:13:11
【问题描述】:

以下代码sn-p:

template = "\                                                                                
function routes(app, model){\                                                                
  app.get('/preNew{className}', function(req, res){\                                         
    res.render('{className}'.ejs, {});\                                                      
  });\                                                                                       
});".format(className=className)

抛出一个 KeyError:

Traceback (most recent call last):   File "createController.py", line 31, in <module>
    });".format(className=className) KeyError: '  app'

有人知道为什么吗?

【问题讨论】:

标签: python


【解决方案1】:

该代码中有许多未转义的大括号。 Python 认为所有大括号都是占位符,并试图全部替换它们。但是,您只提供了一个值。

我希望您不希望所有大括号都成为占位符,因此您应该将不想替换的大括号加倍。如:

template = """                                                                  
function routes(app, model){{
  app.get('/preNew{className}', function(req, res){{
    res.render('{className}'.ejs, {{}});                                           
  }};                                                      
}});""".format(className=className)

我还冒昧地对字符串文字使用了三引号,这样您就不需要在每行末尾使用反斜杠了。

【讨论】:

  • 非常有帮助的答案。感谢您与大家分享这个。 :)
猜你喜欢
  • 2013-01-18
  • 2021-11-13
  • 1970-01-01
  • 2013-02-13
  • 2021-03-03
  • 2022-01-15
  • 2018-08-13
相关资源
最近更新 更多