В python шаблон Jinja2 возвращает обратную косую черту перед двойной кавычкой, мне нужно удалить это

Одна из строк в моем шаблоне 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]))

И именно этот вызов модуля Troposphere для Base64 и / или Join вызывает проблему и вставляет escape-коды.

Дальнейшее тестирование показывает, что именно Base64 выполняет экранирование.

1 ответ

Это похоже на взлом, и я надеюсь, что у кого-то есть лучшее решение, но я решил проблему, выполнив следующее.

В шаблоне я сделал строку похожей на это:

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

Затем, в последней строке программы, где я в настоящее время:

print t.to_json()

Я изменил это на

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

Который производит именно то, что я ищу.

Другие вопросы по тегам