使用Python 3.x将多个字典写入多个CSV文件

3

我已经苦恼了一段时间,希望有人能帮忙。 我有一个字典列表。每个字典都应该写入一个单独的.csv文件。我该怎么做?

目前我所拥有的代码并不能实现:

from openpyxl import *
from openpyxl.styles import *
import csv

a = 1
b = 2
c = 3
d = 4
e = 5
f = 6
g = 7
h = 8

one = {'A':a,'B':b}
two = {'C':c,'D':d}
three = {'E':e,'F':f}
four = {'G':g,'H':h}
list = [one,two,three,four]

def main():
    for eachfilename, eachdict in enumerate(list):
        with open(eachfilename, 'w') as csvfile:
            writer = csv.writer(csvfile)
            for line in eachdict: 
                writer.writerow(line)   

main()

最终我希望有四个看起来像这样的.csv文件:
文件1:
A,a
B,b

文件2:

C,c
D,d

File3: ...


3
能否解释一下你目前的代码为什么不起作用呢? - cs95
顺便问一下,在主函数的第一个for循环后添加一个简单的print eachfilename,eachdict,你是否能看到任何有意义的东西(即文件名和字典,这是你的后续代码所假设的)? - DisappointedByUnaccountableMod
2个回答

2
您的代码存在几个问题,需要先解决。
  1. 变量名不能是整数。
  2. 变量a、b、c、d、e、f、g、h均未定义。
  3. 传入csv.writer()的参数必须具有write()功能 - 在您的情况下应该是一个文件对象。因此,您应该使用csv.writer(csvfile)而不是csv.writer(eachfilename)

1
最小示例的整个思想是它可以“运行”,并在此过程中“展示您的问题”,使读者能够理解和重现问题,以帮助您解决它。 - DisappointedByUnaccountableMod

1

您不能将字典赋值给整数。尝试这样做:

import csv
s = [{'A':a,'B':b}, {'C':c,'D':d}, {'E':e,'F':f}, {'G':g,'H':h}]
new_data = [["{},{}".format(a, b) for a, b in i.items()] for i in s]
write = csv.writer(open('filename.csv'))
write.writerows(new_data)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接