我有一个这样的文本文件:
0 1 0 10.2 5.82 4.82
1 -1 0 8.21 5.74 3.62
0 1 1 5.33 8.66 5.47
此文本文件有几百行采用这种模式。
在第一行中,如果第一列为0,则第四列相同。第二列是1,第五列是+10,所以值为15.82。
在第二行中,如果第一列为 1,则第四列为 +10,因此值为 18.21。第二列是-1,第五列是-10,所以值为-4.26。等
最终输出是这样的:
10.20 15.82 4.82
18.21 -4.26 3.62
5.33 18.66 15.47
我试过使用我写的这段代码:
with open('abc') as f, open('out.txt', 'w') as f1:
for line in f:
reff = line.split()
if reff[0] == '0':
value = float(reff[3])
a = str(value)
line = "".join(a) + " " + "".join(reff[4]) + " " + "".join(reff[5]) + '\n'
elif reff[0] == '1':
value = float(reff[3]) + 10
a = str(value)
line = "".join(a) + " " + "".join(reff[4]) + " " + "".join(reff[5]) + '\n'
elif reff[0] == '-1':
value = float(reff[3]) - 10
a = str(value)
line = "".join(a) + " " + "".join(reff[4]) + " " + "".join(reff[5]) + '\n'
f1.write(line)
我还在每个 if 和 elif 语句中添加了更多的 if 和 elif 语句以检查第二列和第三列。但是,只更新了第四列。
我做错了什么?
请您参考如下方法:
这实际上可以非常简单地完成:
with open('abc') as f, open('out.txt', 'w') as f1:
for line in f:
line = line.split()
for i in range(0,3):
line[i+3] = float(line[i+3])+(int(line[i])*10)
f1.write(' '.join([str(value) for value in line[3:]]) + '\n')
这会给你作为输出:
10.2 15.82 4.82
18.21 -4.26 3.62
5.33 18.66 15.47
