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

使用csv.reader读取CSV文件时line_num属性始终返回0的问题求解

问题根源

你的代码核心错误是遍历对象不匹配:

  • 你已经通过csv.reader(f)生成了结构化的CSV读取对象csv_f,但后续循环直接遍历原始文件对象f,导致获取的row是未拆分的单行字符串,你调用row[2]实际是取字符串的第三个字符,而非CSV文件的第三列值,自然匹配不到"H"的条件,返回空集合。
  • 只有遍历csv_f对象时,csv_f.line_num才会自动递增计数,遍历f时该值始终停留在初始值0,这就是你测试代码输出大量0的原因。
  • 额外问题:你要实现的是存入集合,但代码中用的是列表的append()方法,不符合需求。
修复后代码
import csv

indexofH = set()  # 按需求初始化集合
with open('file.csv', 'r', encoding='utf-8') as f:
    csv_f = csv.reader(f)
    # 遍历csv读取器而非原始文件对象
    for row in csv_f:
        # 增加边界判断,避免行长度不足3导致索引报错
        if len(row) >=3 and row[2] == "H":
            indexofH.add(csv_f.line_num) # 集合用add方法存入元素
print(indexofH)

如果需要用列表存储行号,把初始化的set()改成[],add方法改成append即可。

内容的提问来源于stack exchange,提问作者MatthewM775

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:04