将csv文件检索到列表时出现键错误

时间:2013-11-10 16:10:15

标签: python csv python-3.x

如果某些文件中不存在“国家/地区”等特定列,如何防止出现错误?

import csv
files = glob.glob ('..\\*.csv')
for file in files:
    countries = []
    with open ('data.csv', newline='') as infile:
        reader = csv.DictReader(infile)
        for row in reader:
            countries.append(row['Country'])
    print (countries)

1 个答案:

答案 0 :(得分:1)

您可以检查字段是否存在

if 'Country' in reader.fieldnames:
   ...

或者您可以在行级别处理问题,就像使用任何类似字典的结构一样。您可以使用.get方法,如果密钥不存在,将返回None:

countries.append(row.get('Country'))

或者您可以使用setdefault方法并提供默认值(也可以使用get):

row.setdefault('Country', 'Unknown')

甚至将代码包装在try-catch块中:

try:
    countries.append(row['Country'])
except KeyError:
    pass

将此与列表推导相结合:

if 'Country' in reader.fieldnames:
    countries = [row.get('Country') for row in reader]