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

Python读取txt文件绘图遇IndexError: list index out of range问题求助

解决IndexError问题并正确读取数据绘图

你的问题出在数据格式和代码读取逻辑不匹配,导致程序无法正确解析(x,y)数据对,进而抛出IndexError: list index out of range。

错误原因分析

你的txt文件里所有数据是一整行(或多行混合空白),每个(x,y)数据对之间用空格分隔,而每个对内部用逗号分隔;但你的代码用csv.reader按逗号拆分内容,并且默认每行是一个(x,y)对,这就导致:

  1. csv.reader会把单行数据拆成一个很长的列表,其中大部分元素是类似"1.5 2.24425"这样的混合字符串,不是单独的x/y值;
  2. 如果文件里存在空白行,或者拆分后出现空元素,循环中取row[0]或row[1]时就会触发索引越界错误。

修正后的代码

我们可以直接读取整个文件内容,先按空白分割出所有数据对,再逐个解析x和y值:

import matplotlib.pyplot as plt

x = []
y = []

with open('raneen.txt', 'r') as file:
    # 读取全部内容,去除首尾空白,按任意空白(空格/换行)分割成单个数据对
    data_pairs = file.read().strip().split()
    for pair in data_pairs:
        # 分割每个数据对的x和y,处理可能存在的前后空格
        x_str, y_str = pair.strip().split(',')
        # 转换为浮点数(支持科学计数法如984.851E-03)
        x.append(float(x_str))
        y.append(float(y_str))

# 绘图部分保持不变
plt.plot(x, y, label='Loaded from file!')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting graph\nCheck it out')
plt.legend()
plt.show()

额外说明

  • 这段代码会自动处理文件中的换行、多余空格等问题,无需担心数据格式的小瑕疵;
  • Python的float()函数可以直接解析你数据中的科学计数法格式(比如984.851E-03),不需要额外处理;
  • 如果你的txt文件后续调整为每行一个数据对,只需把读取逻辑换成按行遍历后拆分逗号即可,但从你提供的数据来看,当前格式用上述代码最适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:50:09