Python解析CSV按索引取列为何出现KeyError错误?
问题原因与解决方案
错误原因
- 你使用的
csv.DictReader返回的每一行是字典类型,而非列表。字典只能通过键(比如列名)取值,不能用数字索引(如row[0])访问,因此会抛出KeyError: 0。 - 从你的输出示例来看,CSV文件没有表头行,
DictReader会自动把第一行数据当作列名(即字典的键),后续行的键都是第一行的数字字符串,自然找不到0这个键。
解决方法
如果需要按数字索引获取指定列,直接用csv.reader替代DictReader即可——它返回的每一行是列表,支持数字索引:
import csv import os csv_file_path = r'C:\Users\ctumbs\OneDrive\General - Vision Dataset\numbers.csv' with open(csv_file_path) as csv_file: reader = csv.reader(csv_file) for row in reader: # 按索引取第0、2、4、6列,注意确保每行列数足够,避免索引越界 print(row[0], row[2], row[4], row[6])
如果非要保留DictReader(比如需要用到列名的场景),可以把字典转成列表后再按索引取值,但这种方式不如直接用csv.reader直观:
import csv import os csv_file_path = r'C:\Users\ctumbs\OneDrive\General - Vision Dataset\numbers.csv' with open(csv_file_path) as csv_file: reader = csv.DictReader(csv_file) for row in reader: row_list = list(row.values()) print(row_list[0], row_list[2], row_list[4], row_list[6])
内容的提问来源于stack exchange,提问作者ct2307
相关产品推荐
相关产品推荐

