在制表符文件中减去两列(python)
我一直在玩一些坐标,想要相互检查一下。
我有一个用制表符分隔的文件,里面有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