将CSV文件的选定列保存在新的CSV文件中

时间:2015-09-08 10:58:49

标签: python csv export-to-csv writetofile

我有一个包含10列的CSV文件input.csv

col0, col1, col2, ..., col9

我想按特定顺序复制特定列:

col0,col5,col4,col7 

转换为新的CSV文件output.csv。我怎么能用Python做到这一点?

2 个答案:

答案 0 :(得分:1)

标准库附带一个csv模块,用于读取和写入CSV文件。使用itertools.imap()operator.itemgetter()可以轻松地从输入中选择所需的列并将结果输入到输出文件中:

#!/usr/bin/env python
from __future__ import absolute_import, division, print_function
import csv
from itertools import imap
from operator import itemgetter


def main():
    delimiter = ','
    with open('input.csv', 'rb') as input_file:
        reader = csv.reader(input_file, delimiter=delimiter)
        with open('output.csv', 'wb') as output_file:
            writer = csv.writer(output_file, delimiter=delimiter)
            writer.writerows(imap(itemgetter(0, 5, 4, 7), reader))


if __name__ == '__main__':
    main()

答案 1 :(得分:1)

BlackJack的响应是可行的方法,使用csv模块,因为您知道要输出的字段的索引,您可以使用命令行输出重定向来引用和打印它们以将它们保存到文件中当您执行脚本python process_csv.py > output.csv

import csv
f = open(filename, 'rt')
reader = csv.reader(f,delimiter=',')
for row in reader:
    print row[0] + "," + row[5] + "," + row[4] + "," + row[7]