我有一个输入文件:
A03 58 0 0 0 -9
A03 59 0 0 0 -9
A03 60 0 0 0 -9
A03 61 0 0 0 -9
A03 62 0 0 0 -9
A03 63 0 0 0 -9
A03 64 0 0 0 -9
A03 65 0 0 0 -9
A03 66 0 0 0 -9
A03 67 0 0 0 -9
A03 68 0 0 0 -9
A03 69 0 0 0 -9
A03 70 0 0 0 -9
A03 71 0 0 0 -9
A03 72 0 0 0 -9
A03 73 0 0 0 -9
A03 74 0 0 0 -9
我想要的输出:
A03_58 A03_58 0 0 0 -9
A03_59 A03_59 0 0 0 -9
A03_60 A03_60 0 0 0 -9
输出将考虑输入文件中的第二列,在第一列和该字母之间添加下划线。然后将其复制到第二列。
我确实知道如何用以下方式复制列:
# with open('inputfile.txt') as inputs:
# for line in inputs:
# parts = line.strip().split()
# print("{0} {1}".format(parts[0], " ".join(parts)))
但是,在使用上述脚本之前,我需要先更改列,然后删除第二列。
在读取较大的输入文件后,我不确定如何解决此问题。浏览了一些索引问题,但找不到答案。
最佳答案
import csv
with open('in.txt') as in_, open('out.csv', 'wb') as out:
writer = csv.writer(out, delimiter=' ')
for line in in_:
row = line.split()
first_col = '{}_{}'.format(row[0], row[1])
writer.writerow([first_col, first_col] + row[2:])