Python Jinja2数组迭代问题
我对Jinja2有一些不寻常的行为,并在一个数组中进行了迭代,但我不能完全理解这个数组。我将一个字典传递到Jinja2,字典的一个值是数组。举个简单的例子就可以了Python Jinja2数组迭代问题,python,csv,jinja2,Python,Csv,Jinja2,我对Jinja2有一些不寻常的行为,并在一个数组中进行了迭代,但我不能完全理解这个数组。我将一个字典传递到Jinja2,字典的一个值是数组。举个简单的例子就可以了 mydict = { 'testvar1': 'this is a test var 1', 'testvar2': 'this is a test var 2', 'testvar3': ['test','test','test','test','test'], } 这是我的Jinja模板 {{ t
mydict = {
'testvar1': 'this is a test var 1',
'testvar2': 'this is a test var 2',
'testvar3': ['test','test','test','test','test'],
}
这是我的Jinja模板
{{ testvar1 }}
{{ testvar2 }}
{% for var in testvar3 %}
{{ var }}
{% endfor %}
现在这真的起作用了,我得到下面的输出
this is a testvar1
this is a testvar2
test
test
test
test
test
test
但是,我正在使用CSV导入实用程序生成字典。现在我知道这个工具将所有值作为字符串导入,所以我用破折号分隔“数组字段”,以便以后可以拆分它们
input_file = csv.DictReader(open("./my_path/import.csv"))
for row in input_file:
for key, value in row.iteritems():
if '-' in value:
value = value.split('-')
当我打印手动创建的字典和csv导入创建的字典中的数组值时,它们看起来是相同的
['test','test','test','test','test']
然而,当我使用csv导入填充的命令生成配置时,我得到的输出是完全不同的
testvar1
testvar2
t
e
s
t
t
e
s
t
等等
现在,它似乎在迭代这些值,就好像它是一个简单的字符串值一样,每次为循环的每次迭代打印一个字符
但是当手工制作字典时,它可以完美地工作
有什么想法吗?如果有更干净的方法,我洗耳恭听
提前感谢。我的问题是数据库中的JSON语法错误
{
"tags" : "[my, wrong, array]"
}
最终被解释为python中的unicode对象,这解释了为什么迭代它就是迭代每个字符。
正确的语法是:
{
"tags": [
"tech",
"python",
"flask"
]
}
可能不重要,但为什么在两个示例中打印的前两个字符串不同?第一个示例说“这是一个testvar1”,但第二个示例只说“testvar1”。不是吹毛求疵,只是想了解这个输出是如何生成的。请展示更多的python代码。例如如何将变量传递给渲染函数。不止你一个人!我也有同样的问题。