使用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和创造我的输出文件?

+1

你为什么不使用内置'csv'模块呢? – Marat

+0

嗨@马拉特是的,那就是我现在正在做的。这更多的是让我自己熟悉Jinja,但看起来这是工作的错误工具。 –

我不确定你的最终目标究竟是什么,但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

在我们的环境中,它用于为各种目的生成可重复的文本文件。我认为你已经把我放在了正确的轨道上。让我测试并回来。 –