Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python jinja2抛出模板语法错误:意外字符_Python_Templates_Dictionary_Jinja2 - Fatal编程技术网

Python jinja2抛出模板语法错误:意外字符

Python jinja2抛出模板语法错误:意外字符,python,templates,dictionary,jinja2,Python,Templates,Dictionary,Jinja2,我正在向Jinja传递一个数据集,其中包含“0Y-5Y”之类的时间段字符串。这些标签对于我的组织来说是标准的,所以我不想更改它们。但是,该字符串导致Jinja抛出TemplateSyntaxError:unexpected char错误 有人能解释一下为什么会出现这个错误,以及我如何避免它吗? 我看到带有空格字符的变量可能会抛出类似的错误,但这不适用于我的情况 似乎Jinja正试图将字符串解析为一个数字?我以为它只是一个简单的字符串,用作字典键?有没有办法强迫Jinja不要这样做,比如使用或类似

我正在向Jinja传递一个数据集,其中包含“0Y-5Y”之类的时间段字符串。这些标签对于我的组织来说是标准的,所以我不想更改它们。但是,该字符串导致Jinja抛出
TemplateSyntaxError:unexpected char
错误

有人能解释一下为什么会出现这个错误,以及我如何避免它吗?

我看到带有空格字符的变量可能会抛出类似的错误,但这不适用于我的情况

似乎Jinja正试图将字符串解析为一个数字?我以为它只是一个简单的字符串,用作字典键?有没有办法强迫Jinja不要这样做,比如使用或类似的方法

这是我的密码:

# https://realpython.com/blog/python/primer-on-jinja-templating/#flask-examples
from jinja2 import Template

data = [
         {'name':'aaa','0Y-5Y':100,'5Y-25Y':50,'total':150}
        ,{'name':'bbb','0Y-5Y':10,'5Y-25Y':125,'total':135}
    ]

html_ok = """
{% for item in data %}
  {{ item.name }} {{ item.total }}
{% endfor %}
"""

html_error = """
{% for item in data %}
  {{ item.name }} {{ item.0Y-5Y }}
{% endfor %}
"""

t=Template(html_ok)
print t.render( data=data )

t=Template(html_error)
print t.render( data=data )
以及输出:

  aaa 150

  bbb 135


Traceback (most recent call last):
  File "C:\Users\beRto\Desktop\jinja_number_key.py", line 23, in <module>
    t=Template(html_error)
  File "C:\Python27\lib\site-packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py", line 945, in __new__
    return env.from_string(source, template_class=cls)
  File "C:\Python27\lib\site-packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py", line 880, in from_string
    return cls.from_code(self, self.compile(source), globals, None)
  File "C:\Python27\lib\site-packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py", line 591, in compile
    self.handle_exception(exc_info, source_hint=source_hint)
  File "C:\Python27\lib\site-packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "<unknown>", line 3, in template
TemplateSyntaxError: unexpected char u'Y' at 51
aaa150
bbb 135
回溯(最近一次呼叫最后一次):
文件“C:\Users\beRto\Desktop\jinja\u number\u key.py”,第23行,在
t=模板(html\U错误)
文件“C:\Python27\lib\site packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py”,第945行,在新的__
从字符串返回环境(源,模板类=cls)
文件“C:\Python27\lib\site packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py”,第880行,在from_字符串中
从_代码返回cls.from(self,self.compile(源代码),globals,None)
文件“C:\Python27\lib\site packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py”,第591行,在编译中
self.handle\u异常(exc\u info,source\u hint=source\u hint)
文件“C:\Python27\lib\site packages\jinja2-2.9.5-py2.7.egg\jinja2\environment.py”,第780行,在句柄\u异常中
重放(exc_类型、exc_值、tb)
模板中第3行的文件“”
TemplateSyntaxError:51处出现意外字符u'Y'

尝试
item['0Y-5Y']
而不是
item.0Y-5Y
,因为您正在访问数据中的单元格,如:

html_ok = """
{% for item in data %}
  {{ item['name'] }}  {{ item['0Y-5Y'] }}
{% endfor %}
 """

我不知道语法是有效的。我将不得不进一步研究它,但它与上面介绍的玩具程序一起工作。谢谢你的引导。我认为它不能仅仅解析item.0Y-5Y。尝试在Python中定义一个变量,比如
0Y-5Y
或者甚至
0Y5Y
,它们都会失败。一个以0开头的变量/属性和一个减号?它不会喜欢的;)