我的 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/