Получение 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
"""