使用jinja生成一个CSV文件
问题描述:
我不太确定Jinja是否适合工作,但是看到它在我们环境中的其他地方使用,我想我会尝试使用这个练习来熟悉我自己用它。使用jinja生成一个CSV文件
我有一个列表a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
我需要写在它的值来创建一个CSV文件。 CSV文件中的所有值都将固定,除了a中的值。
所以我想象的模板文件将是这个样子(我知道这是不是Jinja2的语法):
a[0], 'something',
a[1], 'else',
a[2], 'but',
.
.
a[5], 'repeated statement',
a[6], 'repeated statement',
.
a[8], 'here endeth the lesson',
我可以访问的内容“A”的指数就像我会在Python和创造我的输出文件?
答
我不确定你的最终目标究竟是什么,但jinja更像是一个用于生成视图的模板工具,而不是某种文件。像@Marat所说的那样,您可以使用csv
模块创建一个csv文件。但是,如果你的真正目的是使用jinja创建某种类型的表视图,其中列表中的值填充在表中,那么你肯定可以在jinja中做到这一点。
在HTML视图,你会做这样的事情:
<table>
<thead>
<tr>
<th>List[idx]</th>
<th>Value</th>
</tr>
<thead>
<tbody>
{%- for item in a -%}
<tr>
<td>a[{{ loop.index - 1 }}]</td>
<td>{{ item }}</td>
</tr>
{%- endfor -%}
</tbody>
</table>
当然,你必须通过你的a
列表作为情境变量的神社为了这个工作。我假设你使用Flask作为你的框架:
@app.route('/your-route')
def your_route_function():
... # your code for creating the 'a' list
... # more code
return render_template('yourhtml.html', a=a)
现在,如果你想通过索引访问你的列表,这也是可能的。您必须确定您的列表,虽然使用神社的length
滤波器的长度:
<table>
<thead>
<tr>
<th>List[idx]</th>
<th>Value</th>
</tr>
<thead>
<tbody>
{%- for idx in range(a|length) -%}
<tr>
<td>a[{{ idx }}]</td>
<td>{{ a[idx] }}</td>
</tr>
{%- endfor -%}
</tbody>
</table>
+0
在我们的环境中,它用于为各种目的生成可重复的文本文件。我认为你已经把我放在了正确的轨道上。让我测试并回来。 –
你为什么不使用内置'csv'模块呢? – Marat
嗨@马拉特是的,那就是我现在正在做的。这更多的是让我自己熟悉Jinja,但看起来这是工作的错误工具。 –