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的原因^_^