Python格式抛出KeyError

low*_*key 54 python

以下代码段:

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

抛出一个KeyError:

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

有人知道为什么吗?

kin*_*all 88

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

我希望你不要让你的所有大括号都是占位符,所以你应该把那些你不想替换的大括号加倍.如:

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

我也冒昧地使用三重引号作为字符串文字,因此你不需要在每一行的末尾使用反斜杠.