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

Python读取CSV指定行列值触发Index Error的问题解决

解决CSV读取时的索引越界问题

错误原因

原代码在循环每一行时就立刻尝试访问data[2],但循环第一次执行时,data里只添加了第一行数据,长度为1,最大索引是0,自然会触发「Index Error: list index out of range」。另外示例CSV里存在空行,读取时会被当成空列表,也会干扰索引定位。

修正方案

方案1:先读取所有有效行再取值

先把CSV里的非空行全部存入列表,再直接访问目标行(注意Python列表索引从0开始,第二行对应索引1,第1列是索引0,第2列是索引1):

import csv

with open("data.csv", "r") as source:
    reader = csv.reader(source)
    # 过滤空行,只保留有数据的行
    data = [row for row in reader if row]
    # 获取第二行第1、2列(对应示例里的"Pear"和"23")
    result1 = data[1][0].strip()  # strip()清除单元格多余空格
    result2 = data[1][1].strip()
    print(result1, result2)

方案2:直接定位目标行,无需存储所有行

如果只需要第二行数据,可以直接跳过第一行和空行,读取目标行:

import csv

with open("data.csv", "r") as source:
    reader = csv.reader(source)
    target_row = None
    line_count = 0
    for row in reader:
        # 跳过空行
        if not row:
            continue
        line_count += 1
        if line_count == 2:
            target_row = row
            break
    if target_row:
        result1 = target_row[0].strip()
        result2 = target_row[1].strip()
        print(result1, result2)

补充说明

  • 示例CSV里的单元格带有多余空格,用strip()可以清除,避免输出内容带空格(比如原数据里的" 23"会变成"23")。
  • 原代码的索引逻辑错误:第二行对应列表索引1,第1列是索引0,第2列是索引1,别搞混了。

内容的提问来源于stack exchange,提问作者dam's

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:12:24