2016-04-02 60 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:])