Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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/5/ruby-on-rails-4/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_Csv_Jinja2 - Fatal编程技术网

Python 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

我对Jinja2有一些不寻常的行为,并在一个数组中进行了迭代,但我不能完全理解这个数组。我将一个字典传递到Jinja2,字典的一个值是数组。举个简单的例子就可以了

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代码。例如如何将变量传递给渲染函数。不止你一个人!我也有同样的问题。