python - 在 python 中,Jinja2 模板在双引号前返回一个反斜杠,我需要删除它

标签 python templates jinja2 troposphere

我的 jinja2 模板中的一行需要返回

   STACKNAME=\"",{"Ref":"AWS::StackName"},"\"

将以上内容放入模板返回

   STACKNAME=\\\"\",{\"Ref\":\"AWS::StackName\"},\"\\\"

我尝试创建一个变量

 DQ = '"'

并将模板设置为

STACKNAME="{{DQ}},{{{DQ}}Ref{{DQ}}:{{DQ}}AWS::StackName{{DQ}}},{{DQ}}"

但结果还是在{{DQ}}变量前加了一个反斜杠

我还尝试输入一个唯一的字符串 %%%DQ%%% 然后得到结果,然后进行字符串替换,但它仍然给我反斜杠。

如何获得我想要的结果?

更新: 我很抱歉。事实证明,返回转义引号的不是 jinja2 模板。我稍后将在脚本中调用:

lc.UserData=Base64(Join("", [commandList]))

正是这种对 Base64 和/或 Join 的对流层模块的调用导致了问题并插入了转义符。

进一步测试明确表明是 Base64 进行了转义。

最佳答案

这感觉像是 hack,我希望有人有更好的解决方案,但我通过执行以下操作解决了问题。

在模板中,我把这行写成这样:

STACKNAME="QQ,{QQRefQQ:QQAWS::StackNameQQ},QQ"

然后,在我目前拥有的程序的最后一行:

print t.to_json()

我改成了

print t.to_json().replace("QQ", '"')

它产生的正是我正在寻找的东西。

关于python - 在 python 中,Jinja2 模板在双引号前返回一个反斜杠,我需要删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762426/

相关文章:

templates - 如何在jinja2中追加到 list

list - Ansible 将列表项连接到字符串中,包括引号

python - 如何将 python C 扩展方法声明为类方法?

python - 如何将 onfocus 添加到 z3c.form 输入

c++ - 特殊类模板的类外构造函数定义

python - 在 python 中转义 HTML。应用引擎

python - tensorflow:简单 LSTM 网络的共享变量错误

python - PyAPNS无法在生产环境中将推送消息传递到iOS设备

c++ - 为什么模板只能在头文件中实现?

c++ - 在模板类中使用非模板函数