Python CSV:仅选择特定的列标题

时间:2015-04-02 13:37:32

标签: python csv

关于Python中的csv模块:

示例 - 第一个文件的内容:

file1.csv, file2.csv, header1, header2
file3.csv, file4.csv, header1, header2, header5
file5.csv, file6.csv, header2

我读取了第一个文件(file1.csv),只需要导出带有header1和header2的列。

对于下一个文件(file3.csv),我只需要将header1,header2和header5导出到file4.csv。

我有一个数组(myParameters = row [" targetcolumns"],其中包含所有标题名称,我需要以某种方式循环,同时创建行,将其写入文件,然后继续下一行。

我不知道该怎么做。

问题是有时我需要4个标题,下一次只需要一个,...

2 个答案:

答案 0 :(得分:0)

假设你有一行字典,每行有{header:value},那么你可以简单地说:

for row in rows:
    csv.writerow([row[h] for h in myParameters])

然后,对于每个文件,myParameters将会有所不同。

答案 1 :(得分:0)

import csv
f = open("somefile.txt", "r")
for line in f:
    l = line.split()
    f1= l[0]
    f2 = l[1]
    headers = l[2:]
    file2 = open(f2, "r")
    for h in headers:
        file2.write(','.join(headers) + '\n')
    with open(f1, "r") as filename:
        r = csv.DictReader(filename)
        for x in r:
            out = []
            for h in headers:
                out.append(x[h])
            file2.write(','.join(out) + '\n')