Python 索引错误超出范围
由于某些原因,我在尝试运行以下代码时遇到此错误Python 索引错误超出范围,python,arrays,indexing,Python,Arrays,Indexing,由于某些原因,我在尝试运行以下代码时遇到此错误 #!/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(x
#!/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)
问题在于你如何阅读文件 这会奏效的
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)
在记事本++之类的编辑器中打开文件,确保正在读取的文件开头或结尾没有多余的行。在记事本++之类的编辑器中打开文件,确保正在读取的文件开头或结尾没有多余的行。快速。。。应能工作(未准确测试:P)
另一个快速的想法是:确保txt文件末尾没有空行。如果行:也检查一下,也许可以添加一个
。一些快速的。。。应能工作(未准确测试:P)
另一个快速的想法是:确保txt文件末尾没有空行。如果行:
也检查一下,也许可以添加一个。您可以更高效(更安全)地阅读这篇文章。我做的第一个更改是在读取文件时使用。这将在您完成文件后自动处理关闭文件的操作
接下来,我删除了拆分('\n')
,因为它不是必需的。相反,我们将一行一行地循环文件,并在空白处拆分它。由于这是一个两列文件,我们将使用以下行执行此操作:
fx,fy = line.split()
我把它放在了try/中,以防文件末尾有空行。这将产生一个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导入。本例中不需要它。您可以更高效(更安全)地阅读它。我做的第一个更改是在读取文件时使用。这将在您完成文件后自动处理关闭文件的操作
接下来,我删除了拆分('\n')
,因为它不是必需的。相反,我们将一行一行地循环文件,并在空白处拆分它。由于这是一个两列文件,我们将使用以下行执行此操作:
fx,fy = line.split()
我把它放在了try/中,以防文件末尾有空行。这将产生一个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导入。本例中不需要它。为什么要在新行上拆分读取.read
将自动一次读取一行。您是否打算执行.readlines
?您遇到了什么错误?当我运行代码时,我得到x=[1,3,5,7]
和y=[2,4,6,8]
我猜(不确定)文件底部有一个空行。文件中可能有空行吗?回车?你为什么要在新行上拆分读数.read
将自动一次读取一行。您是否打算执行.readlines
?您遇到了什么错误?当我运行代码时,我得到x=[1,3,5,7]
和y=[2,4,6,8]
我猜(不确定)文件底部有一个空行。文件中可能有空行吗?马车回程?