在tab'ed文件中删除两列(python)

时间:2011-08-25 11:36:58

标签: python tabs

我一直在修补一些我希望互相检查的坐标。

我有一个tab'ed字段,由6列组成。这些是我想要减去的最后4列,并在最后一个坐标列之后的两列中得到结果。也是tab'ed。

我想为相当大的文件执行此操作,这可能吗?如果没有,我怎么能用相当小的文件呢?我做了一些阅读,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 个答案:

答案 0 :(得分: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