В 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", '"')
Который производит именно то, что я ищу.