2014-03-14 74 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',它同时包含每个文件的一行。请注意,我已更新我的解决方案以解决无关的错误:我没有使用零索引。 –

相关问题