Python格式抛出了一个错误

2024-03-28 10:50:58 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码段:

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

抛出一个键错误:

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

有人知道为什么吗


Tags: appformatgetmodel代码段错误functionres
2条回答

嗯,没有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, {});});});'

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

我希望您不希望所有的大括号都是占位符,所以您应该将不希望替换的大括号加倍。例如:

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

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

相关问题 更多 >