【发布时间】:2015-09-30 16:40:55
【问题描述】:
我有这个 Python 代码:
import csv
csvfile = 'stations-nl-2014-01.csv'
try:
f = open(csvfile, 'r')
reader = csv.DictReader(f, delimiter=';')
for row in reader:
print(row['name'], '--', row['type'])
finally:
f.close()
我可以使用常规的 csv.reader() 方法,但有人告诉我使用 csv.DictReader() 是最佳做法,因为您可以按名称选择列,这使代码更具可读性。但是,当我使用普通的 csv.reader() 方法时,没有显示错误。当我使用 DictReader 时,我收到以下错误:
print(row['name'], '--', row['type'])
KeyError: 'name'
当我将代码更改为:
import csv
csvfile = 'stations-nl-2014-01.csv'
try:
f = open(csvfile, 'r')
reader = csv.reader(f, delimiter=';')
for row in reader:
print(row)
finally:
f.close()
...一切正常。但是使用 csv.DictReader() 并按列名选择行会引发错误。有人知道怎么修这个东西吗?我已经仔细检查了 .csv 文件的路径和列名,一切都正确(没有 DictReader 也可以正常工作)。
【问题讨论】:
-
print row.keys()有没有给你任何有用的东西? -
您能否从您的 CSV 中提供一些示例行?我最初的假设是你需要
row['Name']。 -
当我执行 row.keys() 时得到这个:
dict_keys(['code\tuic\tnaam\tmiddel_naam\tkorte_naam\trdt_url\ttype\tgeo_lat\tgeo_lng'])我尝试了列名tnaam和ttype,它们在 dict_keys 列表中,但它们也会产生相同的错误.