1

我有以下代码:

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......有什么想法可以解决这个问题吗?

4

1 回答 1

2

如果您尝试仅从 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))

您的主要问题是您正在使用.writerowswhich 需要一个可迭代对象,并将其中的每一个视为一行,因此给它[1, 2, 3]它将写出 3 行...虽然 using.writerow将期望一个可迭代对象,并写一行,与那些作为列...

于 2013-11-14T21:04:01.320 回答