以下两行有啥问题[重复]
Posted
技术标签:
【中文标题】以下两行有啥问题[重复]【英文标题】:What's wrong with the following two lines [duplicate]以下两行有什么问题[重复] 【发布时间】:2016-03-05 09:25:12 【问题描述】:我正在尝试编写一段 python 代码来编写一段 CMake 代码...
但是当我进入以下阶段时:
def_desc = "blaa"
s = " FILE(WRITE $CONFIG_H \"/* 0 */\\n\")\n".format(def_desc)
然后python对我大喊:
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]
我知道解释器以某种方式认为CONFIG_H
应该表示format
参数列表中的一个参数...但是不,我真的很想将其打印到输出中...是的。
我该如何处理这种情况?
【问题讨论】:
【参考方案1】:你需要使用双括号:
s = " FILE(WRITE $CONFIG_H \"/* 0 */\\n\")\n".format(def_desc)
不过,将模板库用于类似这样的东西要容易得多,比如 jinja 或 mako。
【讨论】:
使用模板库比使用单个参数的format
更容易?我对此表示怀疑。模板库在转义特殊字符时也会遇到同样的问题。
@interjay 使用模板库编写 cmake 文件(OP 提到的尝试这样做)比逐行组装更容易;-)
@m.wasowski 我刚开始学习 python ... :) 但是感谢您提到模板库,我会尽快研究出来!【参考方案2】:
如果不用于格式变量,则需要转义括号“”。
def_desc = "blaa"
s = " FILE(WRITE $CONFIG_H \"/* 0 */\\n\")\n".format(def_desc)
【讨论】:
好的,谢谢。今天我了解到 \ 不是在 python 中逃避 的好方法 :)以上是关于以下两行有啥问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章