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

将CSV转换为字典列表时触发IndexError:列表索引超出范围

解决列表索引超出范围错误及代码修正

一、索引越界错误的原因及解决

你遇到的IndexError: list index out of range主要来自两个可能:

  • CSV文件存在空白行:如果文件末尾有空白行,csv_reader会读取到一个空列表row,此时循环遍历表头索引时,row[i]会因行内容为空触发索引越界。
  • 某行数据列数与表头不匹配:若某行的逗号分隔字段数量少于表头的6个字段,也会导致该错误。

修复方法:

读取每行前先校验行长度与表头是否一致,不一致则跳过该行:

for row in csv_reader:
    # 跳过空行或列数不匹配的无效行
    if len(row) != len(headers):
        continue
    for i, title in enumerate(headers):
        data[title].append(row[i])

二、代码中其他逻辑错误修正

除了索引问题,你的代码还有几处错误会导致后续运行失败:

  1. 类型转换逻辑错误:
    你写的for i in range(len(["OPEN"]))完全错误——["OPEN"]是仅含一个字符串的列表,len结果为1,只会处理第一个元素;且["OPEN"][i]取的是字符串"OPEN",不是数据里的数值。正确写法用列表推导式更简洁:

    # 转换OPEN列数值类型
    data["OPEN"] = [float(val) for val in data["OPEN"]]
    # 转换CLOSE列数值类型
    data["CLOSE"] = [float(val) for val in data["CLOSE"]]
    
  2. 绘图参数错误:
    ax.plot(["DATE"], ["OPEN"])里的["DATE"]是字符串列表,不是你处理后的日期数据,需传入字典中存储的实际数据:

    ax.plot(data["DATE"], data["OPEN"], label="OPEN")
    ax.plot(data["DATE"], data["CLOSE"], label="CLOSE")
    # 添加图例提升可读性
    ax.legend()
    
  3. 图表显示兼容问题:
    fig.show()在部分环境下无法正常显示,建议替换为plt.show()。

三、修正后的完整代码

import csv
import datetime
import matplotlib.pyplot as plt

filename = "pathtocsv.csv"

with open(filename, "r") as file:
    csv_reader = csv.reader(file)
    headers = next(csv_reader)
   
    # 用字典推导式初始化数据结构更简洁
    data = {title: [] for title in headers}

    for row in csv_reader:
        if len(row) != len(headers):
            continue
        for i, title in enumerate(headers):
            data[title].append(row[i])

# 批量转换日期格式
data["DATE"] = [datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M') for date_str in data["DATE"]]
# 批量转换数值类型
data["OPEN"] = [float(val) for val in data["OPEN"]]
data["CLOSE"] = [float(val) for val in data["CLOSE"]]

fig, ax = plt.subplots()
ax.plot(data["DATE"], data["OPEN"], label="OPEN")
ax.plot(data["DATE"], data["CLOSE"], label="CLOSE")
ax.legend()
fig.autofmt_xdate()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:32:33