Python中csv.DictReader仅输出对象地址,请求排查错误
Python csv.DictReader 无法读取数据问题排查
你编写的Python代码执行后仅输出 <csv.DictReader object at 0x7f2ee79531c0>,按官方文档写法使用 csv.DictReader(file) 或指定分隔符 csv.DictReader(file, delimiter=',') 都无法正常读取数据,相关信息如下:
data.csv 结构
col1, col2, col3 val1, val2, val3
你的代码
file_path = r'data.csv' with open(file_path) as file: data = csv.DictReader(file) print(data)
错误原因分析
- 直接打印对象而非数据:
csv.DictReader返回的是可迭代对象,不是直接的数据集,直接打印只会输出对象的内存地址,这是正常行为,并非读取失败。 - 语法缩进错误:
with语句块前多了缩进,会触发IndentationError,直接导致代码无法正常执行。 - CSV字段含多余空格:你的CSV文件中逗号后带有空格(如
col1, col2),默认配置下DictReader会将空格包含在键名中(比如键为' col2'而非'col2'),后续取值易出错。 - 遗漏csv模块导入:原代码未导入
csv模块,这是使用DictReader的必要前提。
修复后的代码
import csv file_path = r'data.csv' with open(file_path) as file: # skipinitialspace=True 自动忽略分隔符后的空格 data = csv.DictReader(file, skipinitialspace=True) # 遍历可迭代对象获取具体数据 for row in data: print(row) # 单独获取字段示例:print(row['col1'])
关键说明
- 必须导入
csv模块才能使用DictReader类。 - 通过
skipinitialspace=True参数可以清理字段名和值中的前置空格,保证键名整洁。 DictReader是惰性迭代对象,需要通过循环遍历或转换为列表(如list(data))才能查看具体数据内容。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

