我是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
关于我哪里出错的任何想法?
提前致谢!
答案 0 :(得分:2)
看起来你的线条实际上并没有导致分裂的4个项目。为此添加条件。
for line in file:
spl = line.strip().split()
if len(spl) == 4: # this will take care of both empty lines and
# lines containing greater than or less than four items
a, b, c, d = spl
A.append(a)
B.append(float(b))
C.append(float(c))
D.append(float(d))
答案 1 :(得分:0)
你碰巧在某个地方有空行(或者只有'\n'
)吗?
你可以强迫
if counter >= 2:
if line.strip():
(a,b,c,d) = line.strip().split()
不检查您的分割线是否为len
为4的一个优点是,如果它没有权利,它将无法自动跳过该行字段数量(就像你在文件末尾用空行所经历的那样):你会得到一个异常,这会强制你仔细检查你的输入(或你的逻辑)。