如何将 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;请参阅示例部分中的示例。
页面上的最后两个示例应该可以满足您的需求。
** 编辑
根据您的编辑...
with open('some.csv', newline='', encoding='utf-8') as f:
如果您不知道要导入的数据的编码,您将 运行 陷入困境。有多种方法可以确定编码类型,但据我所知,这超出了 CSV 模块的范围。
这条线似乎对我有用:
with open(TICKERS, encoding='utf-8', errors='ignore') as f:
尝试将 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;请参阅示例部分中的示例。
页面上的最后两个示例应该可以满足您的需求。
** 编辑
根据您的编辑...
with open('some.csv', newline='', encoding='utf-8') as f:
如果您不知道要导入的数据的编码,您将 运行 陷入困境。有多种方法可以确定编码类型,但据我所知,这超出了 CSV 模块的范围。
这条线似乎对我有用:
with open(TICKERS, encoding='utf-8', errors='ignore') as f: