2017-03-03 83 views
0

我不太確定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,但看起來這是工作的錯誤工具。 –

回答

1

我不確定你的最終目標究竟是什麼,但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

在我們的環境中,它用於爲各種目的生成可重複的文本文件。我認爲你已經把我放在了正確的軌道上。讓我測試並回來。 –