Skip to main content
 首页 » 编程设计

python之修改文件文本

2025年05月04日16cmt

我有一个这样的文本文件:

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