2014-10-07 49 views
0

我已經開始學習燒瓶了,我堅持迭代通過csv。Python燒瓶 ​​- 卡住DictReader UnicodeDecode問題

我想運行一個列出財富500的csv並在頁面上打印它們。 CSV包含公司,收入,利潤和排名。

我得到的錯誤是:

File "/Project/FLASK/app/templates/companies.html", line 15, in block "content" 

<td> {{ keys.Company }} </td> 

UnicodeDecodeError: 'utf8' codec can't decode byte 0x8e in position 3: invalid start byte 

下面是companies.html

{% extends "base.html" %} 
{% block content %} 
    <table> 
      <tr> 
       <td> Company </td> 
       <td> Revenues </td> 
       <td> Profits </td> 
       <td> Rank </td> 

      </tr> 
     {% for keys in companies %} 

      <tr> 
       <td> {{ keys.Company }} </td> 
       <td> {{ keys.Revenues }} </td> 
       <td> {{ keys.Profits }} </td> 
       <td> {{ keys.Rank }} </td> 

      </tr> 
     {% endfor %} 
    </table> 
{% endblock %} 

最後是我的views.py文件:

@app.route('/companies') 
def companies(): 
    import csv 

    with open('companies.csv','rU') as f: 
     companies = csv.DictReader(f) 


     return render_template("companies.html", 
          title='Home', 
          companies=companies) 

如果我改變{{鍵.Company}}爲{{keys}}顯示字典,但是當我更改爲keys.Company或keys.Revenues時,我得到相同的錯誤

+0

如果您不以Unicode讀取它,會發生什麼情況? – 2014-10-07 08:28:44

回答

0

在Jinja2中,您必須傳遞unicode才能渲染僅包含ASCII字符的函數。因此,請將更改爲:

<td> {{ keys.Company.decode('utf-8') }} </td>