繁体   English   中英

Python 格式抛出 KeyError

[英]Python format throws KeyError

以下代码片段:

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 将所有大括号视为占位符,并试图将它们全部替换。 但是,您只提供了一个值。

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

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

我还冒昧地为字符串文字使用了三重引号,因此您不需要在每行末尾使用反斜杠。

好吧,另一种没有format可能是:

In [1673]: className = 'myclass'                                                                                                                                                                            

In [1674]: template = 'function routes(app, model){app.get("/preNew"{'+className+'}, function(req, res){res.render({"'+className+'".ejs, {});});});'                                                        

In [1675]: template                                                                                                                                                                                         
Out[1675]: 'function routes(app, model){app.get("/preNew"{myclass}, function(req, res){res.render({"myclass".ejs, {});});});'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM