2014-03-14 176 views
0

有人可以幫我解決這個問題嗎?我不知道如何解決這個問題。我有10個不同的csv文件。每個文件包含不同數量的列。每列包含一個標題和數據。我想複製來自不同csv文件的選擇性列,並按照特定順序將它們放在新文件中。例如,來自從file3的文件2列1,5,6從文件1,列1,2,3,柱8創建包含在相應的格式7列的文件:從不同的csv文件中提取列到一個文件

column1(file1) column1(file2) column2(file2) column3(file2) column5(file1) column8(file3) column6(file1) 

如何編碼此?

回答

1

這是未經測試,但應該把你在正確的道路上:

import csv 
import itertools 

FILES = ['file1.csv', 'file2.csv', 'file3.csv', ...] 

with open('output', 'wb') as output: 
    input_files = [ csv.reader(open(fname, 'rb')) for fname in FILES ] 
    writer = csv.writer(output) 
    for row in itertools.izip(*input_files): 
     writer.writerow([ 
      # format is row[file#-1][column#-1] 
      row[0][0], 
      row[1][0], 
      row[1][1], 
      row[1][2], 
      row[0][4], 
      row[2][7], 
      row[0][5], 
     ]) 
+0

我只是嘗試它,遇到這個錯誤:回溯(最近通話最後一個): 文件「C:/Python33/choosing_columns.py 「行13,在 writer.writerow([row [0] [0],row [1] [0],row [2] [0]]) TypeError:'_csv.reader'對象不可下標 – user3302763

+0

任何關於前進方向的建議都會很有幫助。謝謝 – user3302763

+0

你會看到這個錯誤的唯一方法是,如果你正在爲input_files中的行進行操作。 'izip'非常重要:它產生一個'tuple',它同時包含每個文件的一行。請注意,我已更新我的解決方案以解決無關的錯誤:我沒有使用零索引。 –

相關問題