在python中,Jinja2模板在双引号前面返回一个反斜杠,我需要删除它
我的jinja2模板中的一行需要返回在python中,Jinja2模板在双引号前面返回一个反斜杠,我需要删除它,python,templates,jinja2,troposphere,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}变量前
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进行了转义。这感觉像是一次黑客攻击,我希望有人有更好的解决方案,但我通过执行以下操作解决了问题 在模板中,我将线条设置为如下所示:
STACKNAME="QQ,{QQRefQQ:QQAWS::StackNameQQ},QQ"
然后,在我目前拥有的程序的最后一行:
print t.to_json()
我把它改成了
print t.to_json().replace("QQ", '"')
这正是我想要的