【发布时间】:2012-10-02 08:48:43
【问题描述】:
我是 python 新手,我正在尝试制作一个读取文件并将信息放入其自己的向量中的程序。该文件是一个 xyz 文件,如下所示:
45
Fe -0.055 0.033 -0.047
N -0.012 -1.496 1.451
N 0.015 -1.462 -1.372
N 0.000 1.386 1.481
N 0.070 1.417 -1.339
C -0.096 -1.304 2.825
C 0.028 -1.241 -2.739
C -0.066 -2.872 1.251
C -0.0159 -2.838 -1.205
从第 3 行开始,我需要将每个向量放在自己的向量中,到目前为止,我有这个:
file=open("Question4.xyz","r+")
A = []
B = []
C = []
D = []
counter=0
for line in file:
if counter>2: #information on particles start on the 2nd line
a,b,c,d=line.split()
A.append(a)
B.append(float(b))
C.append(float(c))
D.append(float(d))
counter=counter+1
我收到此错误:
File "<pyshell#72>", line 3, in <module>
a,b,c,d=line.split()
ValueError: need more than 0 values to unpack
关于我哪里出错了有什么想法吗?
提前致谢!
【问题讨论】:
-
文件第一行的 45 是什么?你的文件是从那里开始的吗??
-
45 是文件的一部分,但我只关心第 3 行及以下的信息
-
出于兴趣,您为什么要分别创建 X 和 Y 坐标列表(以
B[15] C[15] D[15]等形式访问),而不是您可以作为对象本身执行计算的[x,y,z]向量列表?正如@sberry 所说,我也不会像您那样将值解压缩到局部变量中;当您可以将拆分(列表)捕获到tokens变量并使用tokens[1:]访问时,这只是额外的不必要的代码(或者更好的是[float(t) for t in tokens[1:]]对于我提到的向量表示。)