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]两处的缩进,如果缩进不对,会报错。