3

jinja2 テンプレートの行の 1 つを返す必要があります

   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 および/または結合用の対流圏モジュールへのこの呼び出しです。

さらにテストすると、エスケープを行うのは 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 に答える