You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

错误原因分析

  1. 直接打印对象而非数据:csv.DictReader 返回的是可迭代对象,不是直接的数据集,直接打印只会输出对象的内存地址,这是正常行为,并非读取失败。
  2. 语法缩进错误:with 语句块前多了缩进,会触发 IndentationError,直接导致代码无法正常执行。
  3. CSV字段含多余空格:你的CSV文件中逗号后带有空格(如 col1, col2),默认配置下 DictReader 会将空格包含在键名中(比如键为 ' col2' 而非 'col2'),后续取值易出错。
  4. 遗漏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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:04:59