3

我的 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 进行了转义。

4

1 回答 1

0

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

在模板中,我使该行看起来像这样:

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

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

print t.to_json()

我把它改成

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

这正是我正在寻找的东西。

于 2015-01-04T22:29:11.863 回答