from csv import DictReader
data_rdr = DictReader(open('data/mn.csv', 'rb'))
header_rdr = DictReader(open('data/mn_headers.csv', 'rb'))
data_rows = [d for d in data_rdr]
header_rows = [h for h in header_rdr]
print (data_rows[:5])
报错:
Traceback (most recent call last):
File "D:\python\python-code\mn-code\main.py", line 4, in <module>
data_rows = [d for d in data_rdr]
File "D:\python\python-code\mn-code\main.py", line 4, in <listcomp>
data_rows = [d for d in data_rdr]
File "D:\python\python39\lib\csv.py", line 110, in __next__
self.fieldnames
File "D:\python\python39\lib\csv.py", line 97, in fieldnames
self._fieldnames = next(self.reader)
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
修改如下:
from csv import DictReader
with open("data/mn.csv", "rt", encoding="utf-8") \
as mnfile:
data_rdr = DictReader(mnfile)
data_rows = [d for d in data_rdr]
with open("data//mn_headers.csv", "rt", encoding="utf-8") as mn_headersfile:
header_rdr = DictReader(mn_headersfile)
header_rows = [h for h in header_rdr]
print(header_rows[:5])
要注意 data_rdr = DictReader(mnfile) data_rows = [d for d in data_rdr]两处的缩进,如果缩进不对,会报错。

本文讲述了如何修复Python中使用DictReader从CSV文件读取时遇到的编码错误,重点在于正确打开文件并指定UTF-8编码。通过with语句确保文件在操作完成后自动关闭,避免了编码问题导致的报错。

被折叠的 条评论
为什么被折叠?



