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

CSV读取触发IndexError: list index out of range错误求助

问题解决:CSV读取时IndexError问题

原始CSV文件内容(data_counter_1.csv)

N;52201261;EM3000v2;2.0;20210801000000;20210801010000;20210801010000;51.28983;15.22345;172.19.224.70;0.0.0.0;ns;

C;20210801000500;127;51.28984;15.22344;127;0;0000000000000;3880356.4*kWh;978928.9*kWh;127;0.6*kWh;0.0*kWh;127;

C;20210801001000;127;51.28984;15.22345;127;0;0000000000000;3880357.0*kWh;978928.9*kWh;127;0.6*kWh;0.0*kWh;127;

C;20210801001500;127;51.28984;15.22344;127;0;0000000000000;3880357.6*kWh;978928.9*kWh;127;0.6*kWh;0.0*kWh;127;

C;20210801002000;127;51.28984;15.22344;127;0;0000000000000;3880358.2*kWh;978928.9*kWh;127;0.6*kWh;0.0*kWh;127;

原始代码

import csv
from openpyxl import Workbook

workbook = Workbook()
worksheet = workbook.active

with open('data_counter_1.csv', 'r') as file:
    reader = csv.reader(file, delimiter=';')
    for row in reader:
        if row[0] == 'N':
            const_value = row[1]
        elif row[0] == 'C':
            row_data = [const_value, row[1], row[8], row[9], row[3], row[4]]
            worksheet.append(row_data)

workbook.save('output_counter_1.xlsx')

错误原因

出现IndexError: list index out of range的核心原因是CSV文件中存在空行,csv.reader会将空行解析为空列表,此时访问row[0]自然会触发索引越界错误。另外还存在潜在问题:如果文件中没有N行,后续访问const_value会触发变量未定义错误。

修正后的代码

import csv
from openpyxl import Workbook

workbook = Workbook()
worksheet = workbook.active
# 初始化const_value,避免无N行时的未定义错误
const_value = ""

with open('data_counter_1.csv', 'r') as file:
    reader = csv.reader(file, delimiter=';')
    for row in reader:
        # 跳过空行或列数不足的无效行
        if not row or len(row) < 2:
            continue
        if row[0] == 'N':
            const_value = row[1]
        elif row[0] == 'C':
            # 确保C行有足够的列数再提取数据
            if len(row) >= 10:
                row_data = [const_value, row[1], row[8], row[9], row[3], row[4]]
                worksheet.append(row_data)

workbook.save('output_counter_1.xlsx')

关键修改点

  • 增加空行和无效行判断:if not row or len(row) < 2: continue,避免访问空列表的索引
  • 初始化const_value为默认值,防止文件中没有N行时出现变量未定义错误
  • 处理C行的列数检查:if len(row) >= 10:,确保要提取的列索引存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:20:32