Python 格式抛出 KeyError

Posted

技术标签:

【中文标题】Python 格式抛出 KeyError【英文标题】:Python format throws KeyError 【发布时间】:2012-03-08 18:51:00 【问题描述】:

以下代码sn-p:

template = "\                                                                                
function routes(app, model)\                                                                
  app.get('/preNewclassName', 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'

有人知道为什么吗?

【问题讨论】:

您需要将所有不应格式化的大括号加倍。 你遇到过multiline strings吗?如果使用三引号,则不必转义每个换行符。 str.format() does not work, keyError的可能重复 【参考方案1】:

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

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

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

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

【讨论】:

非常有帮助的答案。感谢您与大家分享这个。 :)

以上是关于Python 格式抛出 KeyError的主要内容,如果未能解决你的问题,请参考以下文章

python assert的用处

python中try Except抛出异常使用方法

在 Python 中,即使键存在,编译器也会为 datetimeIndex 函数抛出键错误

python基础之 数据格式化

在python中将Dataframe列转换为时间格式

python字符串格式抑制/静默keyerror/indexerror [重复]