在制表符文件中减去两列(python)

0 投票
1 回答
2424 浏览
提问于 2025-04-17 00:20

我一直在玩一些坐标,想要相互检查一下。

我有一个用制表符分隔的文件,里面有6列数据。我想要对最后4列进行减法运算,然后把结果放在最后一个坐标列后面的两列中,同样是用制表符分隔。

我想对比较大的文件进行这个操作,这样做可以吗?如果不行,那我该怎么处理比较小的文件呢?我查了一些资料,发现csv模块到处都有提到。

    337905.44   5269907.69  337905.38   5269907.78
    337917.95   5269907.55  337917.93   5269907.62
    337930.46   5269907.34  337930.48   5269907.46
    337942.97   5269907.13  337942.84   5269907.06

这是我做到的地方,后来我放弃了;


    import csv
    with open('coor.txt', newline='') as f:
        reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)

总之,我想做的就是把第一列和第三列相减,把第二列和第四列相减,然后把结果放在最后一个坐标列后面的两列中。

提前谢谢你们!

1 个回答

3

像这样吗?

#!/usr/bin/env python

with open('input') as fd:
    for line in fd:
        columns=line.split()
        columns=map(float,columns)
        print "%s | \t %s \t %s" % (line.strip(), columns[0] - columns[2],
                                    columns[1] - columns[3])

输出结果

337905.44   5269907.69  337905.38   5269907.78 |     0.0599999999977     -0.089999999851
337917.95   5269907.55  337917.93   5269907.62 |     0.0200000000186     -0.070000000298
337930.46   5269907.34  337930.48   5269907.46 |     -0.0199999999604    -0.120000000112
337942.97   5269907.13  337942.84   5269907.06 |     0.129999999946      0.070000000298

使用 csv-module

import csv

with open('input', 'rb') as fd:
    reader=csv.reader(fd,delimiter='\t')
    for row in reader:
        #your calculations
        print row

撰写回答