2016-04-02 58 views
1

我有一个输入文件:Python文本文件中的列操作。

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 

输出将考虑inputfile中的第二列,加下划线的第一列和那封信。然后把它复制到第二列。 我知道如何复制列机智这样的:

# with open('inputfile.txt') as inputs: 
#  for line in inputs: 
#   parts = line.strip().split() 
#   print("{0} {1}".format(parts[0], " ".join(parts))) 

不过,我需要先更改列,使用上面的脚本之前删除的第二列。

我不知道如何处理大型输入文件后读取。浏览一些索引问题,但无法找到答案。

回答

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