繁体   English   中英

索引错误超出范围python

[英]Index error out of range python

由于某些原因,尝试运行以下代码时出现此错误

#!/usr/bin/python
import matplotlib.pyplot as plt
x = []
y = []
readFile = open('Out_0_0.txt','r')
sepFile = readFile.read().split('\n')
readFile.close()
for plotPair in sepFile:
    xandy = plotPair.split()
    x.append(int(xandy[0]))
    y.append(int(xandy[1]))
print x
print y

当我删除x.append和y.append行并仅放置一条print语句以打印出xandy中的内容时,它会很好地打印出数组中的每对值。 文本文件有这个

 1 2
 3 4
 5 6
 7 8

我要做的就是将第一列存储在x数组中,将第二列存储在y数组中

问题在于您如何读取文件。

这将起作用。

x = []
y = []
with open('test.txt','r') as data_file:
    for plot_pair in data_file:
        xandy = plot_pair.split()
        x.append(int(xandy[0]))
        y.append(int(xandy[1]))
print(x)
print(y)

在诸如Notepad ++之类的编辑器中打开文件,并确保要读取的文件的开头或结尾没有多余的行。

您可以更有效(更安全)地阅读本文档。 我第一个变化是使用with在文件中读取时。 完成处理后,它将自动处理关闭文件。

接下来,我删除了split('\\n')因为它不是必需的。 相反,我们将逐行循环遍历文件,并仅在空白处将其拆分。 由于这是一个两列文件,因此我们将在此行中执行以下操作:

fx,fy = line.split()

我将其放在try / except中,以防文件末尾有空行。 这将产生ValueError ,并且假设这是文件的结尾。

然后,将行的列附加到最终数组。

x = []
y = []
with open('test.txt') as f:
    for line in f:
        try:
            fx,fy = line.split()
        except ValueError:  
            break       
        x.append(int(fx))
        y.append(int(fy))

print x
print y

打印输出:

[1, 3, 5, 7]
[2, 4, 6, 8]

最后,我删除了matplotlib导入。 此示例不是必需的。

快速的东西...应该工作(未经严格测试的:P)

x = []
y = []
with open(inputFile, 'r') as f:
    for line in f:
        nextX, nextY = map(int, line.split(' '))
        x.append(nextX)
        y.append(nextY)

另一个快速思考:确保txt文件最后没有空行。 也许添加一条if line:检查一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM