Python 我正在尝试编写一个函数,以便它接收一组记录并以csv格式存储它们

Python 我正在尝试编写一个函数,以便它接收一组记录并以csv格式存储它们,python,csv,Python,Csv,到目前为止,我在函数中所能做的就是将所有数据存储两次 import csv def csvWriter(filename, records): header = [] for i in records: for v in i: header.append(v) test = open(filename,'w') dict_wr = csv.DictWriter(test,header) dict_wr.writerow(dict(zip(header,h

到目前为止,我在函数中所能做的就是将所有数据存储两次

import csv
def csvWriter(filename, records): 
  header = []
  for i in records:
    for v in i:
      header.append(v)
  test = open(filename,'w')
  dict_wr = csv.DictWriter(test,header)
  dict_wr.writerow(dict(zip(header,header)))
  for i in records:
    dict_wr.writerow(dict(zip(header,i.values())))
  test.close()
  return '%d records processed.' % len(records)
文件包含:

a,b,a,b
1,2,1,2
3,4,3,4

我相信我发现了问题,在for循环中,我在创建正确的标题时遇到了问题

本例中的记录似乎是两个具有相同键“a”和“b”的词典。您可以通过从第一个字典获取标题来解决此问题:

for i in records[0]:
    for v in i:             
        header.append(v)
但是,如果您的其他记录具有唯一的键值,您可能希望将它们包含在标题中:

for i in records:
    for v in i:
        if v not in header: header.append(v)
最后,如果您在头中有重复的值,并且您写了一行,那么它将为每个重复的头值重复条目。比如说,

import csv
testfile = open("test.csv", "w")
header = ["a","b", "a","b"]                      #duplicate header fields
writer = csv.DictWriter(testfile, header)
writer.writerow(dict(zip(header, header)))
writer.writerow({header[0]:"A", header[1]:"B"})  #notice it writes 4 values to the row
testfile.close()

对于CSV,只需导入CSV。这就是我使用Python的原因^_^