如何将 csv 数据读入 Django 模型?

How to read csv data into django models?

尝试将 csv 文件导入 Django 模型后,我不断收到此错误消息。

TICKERS 有两列:列[0] = 名称,列[1] = 代码

populate_symbol.py

def populate():
   with open(TICKERS, 'rU') as csvfile:
    file = csv.reader(csvfile, delimiter=',')
    for row in file:
        add_ticker(str(row[0]), str(row[1]))

def add_ticker(name, ticker):
  c = Symbol.objects.get_or_create(name=name, ticker=ticker)
  return c

错误信息:

(result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 555: invalid start byte

有没有办法标记 csv reader 以读取所有类型的数据(utf-8 或 unicode)?

P.S: Python 3.4.3,Django 1.7

Python 2.7(假设)的官方文档说明如下..

注意:此版本的csv模块不支持Unicode输入。此外,目前还存在一些关于 ASCII NUL 字符的问题。因此,为了安全起见,所有输入都应该是 UTF-8 或可打印的 ASCII;请参阅示例部分中的示例。

Python 2.7 CSV Examples

页面上的最后两个示例应该可以满足您的需求。

** 编辑

根据您的编辑...

Python 3.4 CSV Examples

with open('some.csv', newline='', encoding='utf-8') as f:

如果您不知道要导入的数据的编码,您将 运行 陷入困境。有多种方法可以确定编码类型,但据我所知,这超出了 CSV 模块的范围。

这条线似乎对我有用:

with open(TICKERS, encoding='utf-8', errors='ignore') as f: