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

Python比对csv文件元素时出现IndexError: list index out of range报错求助

报错原因与修复方案

核心报错原因

你遇到的IndexError: list index out of range和数据类型无关,触发原因是csv文件中存在空白行:csv.reader读取到完全空白的行时,会返回空列表[],此时你直接访问row[0]就会触发索引越界错误。

你猜测的类型不匹配问题不存在:input()返回的结果本身就是字符串类型,csv.reader读取的每行字段默认也是字符串类型,你可以通过以下代码验证二者类型:

print(type(username))
print(type(row[0]))

另外你的代码还存在三个隐藏问题:

  • with open上下文管理器会自动关闭文件,不需要额外写f.close()
  • line_count变量没有预先初始化就执行+=1操作,后续运行也会触发报错
  • 你给出的代码片段中with open行的缩进错误,要和前面的username = ...行保持同级缩进

修复后代码示例

import csv

line_count = 0 # 提前初始化计数变量
username = input("Please put in username: ")

with open(r"C:\Users\This\Is\A\Path\user.csv", 'r', encoding='utf-8') as f:
    reader = csv.reader(f, delimiter=',')
    for row in reader:
        # 先判断行不为空再访问索引
        if not row:
            continue
        if username == row[0]:
            data = row
            print(data)
            line_count += 1

可选优化方案

你可以使用csv.DictReader直接按列名读取字段,不需要硬编码索引,可读性和容错性更高:

import csv

line_count = 0
username = input("Please put in username: ")

with open(r"C:\Users\This\Is\A\Path\user.csv", 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        if username == row['Username']:
            print(list(row.values()))
            line_count += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:03