修改文件文本

Cha*_*ang 1 python file text-files conditional-statements

我有这样的文本文件:

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
Run Code Online (Sandbox Code Playgroud)

此文本文件具有此行模式的几百行.

在第一行中,如果第一列为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
Run Code Online (Sandbox Code Playgroud)

我尝试过使用我编写的代码:

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)
Run Code Online (Sandbox Code Playgroud)

我还在每个语句和语句中添加了更多ifelif语句,以便检查第二列和第三列.但是,只更新了第四列.ifelif

我究竟做错了什么?

FMc*_*McC 5

这实际上可以非常简单地完成:

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')
Run Code Online (Sandbox Code Playgroud)

哪个会给你输出:

10.2 15.82 4.82
18.21 -4.26 3.62
5.33 18.66 15.47
Run Code Online (Sandbox Code Playgroud)