Получение Python Cheetah для печати обратной косой черты

У меня проблемы с тем, чтобы Гепард Питона напечатал для меня обратную косую черту.

Гепард версия 2.4.4

from Cheetah.Template import Template

my_template = """
Stuff $var1\\$var2
"""

t = Template(source=my_template, searchList = [{"var1" : """\\x\y\z""", "var2" : "some"}])
print str(t)

Я ожидал увидеть выход

Stuff \\x\y\z\some

Но я получаю

Stuff \x\y\z$var2

Каким должен быть шаблон в этом случае?

2 ответа

Решение

Простой способ добиться этого - использовать синтаксис гепарда <% = =>

my_template = """
Stuff $var1<%= '\\\\'%>$var2
"""

Проблема с кодом

my_template = """
Stuff $var1\\$var2
"""

это то, что сначала он анализируется Python; Python интерпретирует двойные обратные косые черты и преобразует их в одиночные обратные косые черты: my_template становится Stuff $var1\$var2 и это то, что передается в шаблон. Если вы хотите удвоить обратную косую черту, вы должны удвоить их еще раз или использовать строку Python raw. Или

my_template = """
Stuff $var1\\\\$var2
"""

или же

my_template = r"""
Stuff $var1\\$var2
"""
Другие вопросы по тегам