2013-11-14 60 views
0

末我有以下代码:写一个清单到CSV文件的蟒蛇

included_cols = [1, 3, 5] 

w = csv.writer(open(args.output,'w')) 
with open('input.csv', 'r') as input_file: 
    fid = csv.reader(input_file, delimiter = ',') 
    for row in fid: 
     item = [row[i] for i in included_cols)] 

     w.writerows(item) 

每次迭代,row是一样的东西[1, 2] ... [3, 4]等,但它不是写每一个列表,一排到w ...任何想法如何我可以解决这个问题?

+0

'item' even哪里界定? –

+0

对不起,我只是更新我的问题。 – marc

+2

你为什么使用'作家'而不是'作家'?否则,你会写行作为行... –

回答

1

如果你想只从一个CSV文件选择某些列,那么你可以使用以下命令:

import csv 
from itertools import imap 
from operator import itemgetter 

with open('input.csv', 'rb') as fin, open('output.csv', 'wb') as fout: 
    csvin = csv.reader(fin) 
    csvout = csv.writer(fout) 
    csvout.writerows(imap(itemgetter(1, 3, 5), csvin)) 

你的主要问题是,你正在使用.writerows这需要一个迭代,和对待每个作为一个行,所以给它[1, 2, 3]它会写出3行...虽然使用.writerow将期望一个单一的迭代,并写一行,与列作为...