Python 什么';下面两行怎么了

Python 什么';下面两行怎么了,python,Python,我正在尝试编写一段python代码,它将编写一段CMake代码 但当我进入以下阶段: def_desc = "blaa" s = " FILE(WRITE ${CONFIG_H} \"/* {0} */\\n\")\n".format(def_desc) 然后蟒蛇对我大叫: Traceback (most recent call last): File "/home/ferencd/tmp/blaa.py", line 2, in <module> s = "

我正在尝试编写一段python代码,它将编写一段CMake代码

但当我进入以下阶段:

def_desc = "blaa"
s = "    FILE(WRITE ${CONFIG_H} \"/* {0} */\\n\")\n".format(def_desc)
然后蟒蛇对我大叫:

Traceback (most recent call last):
  File "/home/ferencd/tmp/blaa.py", line 2, in <module>
    s = "    FILE(WRITE ${CONFIG_H} \"/* {0} */\\n\")\n".format(def_desc)
KeyError: 'CONFIG_H'
[Finished in 0.0s with exit code 1]
回溯(最近一次呼叫最后一次):
文件“/home/ferenced/tmp/blaa.py”,第2行,在
s=“FILE(WRITE${CONFIG\u H}\”/*{0}*/\\n\”)\n”。格式(def\u desc)
KeyError:'CONFIG_H'
[在0.0秒内完成,退出代码为1]
我理解,解释器认为
{CONFIG_H}
应该是
格式的参数列表中的一个参数。。。但是不,我真的想把它打印到输出中。。。事实就是这样


如何处理这种情况?

如果格式变量使用not,则需要转义括号“}”

def_desc = "blaa"
s = "    FILE(WRITE ${{CONFIG_H}} \"/* {0} */\\n\")\n".format(def_desc)

您需要使用双大括号:

s = "    FILE(WRITE ${{CONFIG_H}} \"/* {0} */\\n\")\n".format(def_desc)

不过,对于像jinja或mako这样的东西,使用模板库要容易得多。

使用模板库要比使用单个参数的
格式
容易得多?我对此表示怀疑。模板库在转义特殊字符时也会遇到同样的问题。@使用模板库编写cmake文件(OP提到的正试图这么做)比逐行组装要容易;-)@m、 瓦索夫斯基:我刚刚开始学习python…:)但是感谢您提到模板库,我将很快研究它们!是的,谢谢。今天我了解到\不是一个好的逃避方法{在python中:)