我一直在修补一些我希望互相检查的坐标。
我有一个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)
总而言之,我想做的就是减去第一列和第三列,减去第二列和第四列,并在最后一个坐标列之后的两列中得到差异。
提前致谢!
答案 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