我有一个输入文件:

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:])

10-05 18:24