Python 将字典列表从文件写入CSV

Python 将字典列表从文件写入CSV,python,csv,dictionary,Python,Csv,Dictionary,我想将字典列表从一个文件写入一个新的CSV文件。这是我的代码 import csv myfile = open(filename, 'r') tocsv = myfile.read() myfile.close() keys = tocsv[0].keys() with open(filename.join('.csv'), 'w+') as outputfile: dictwriter = csv.DictWriter(outputfile, keys) dictwrite

我想将字典列表从一个文件写入一个新的CSV文件。这是我的代码

import csv

myfile = open(filename, 'r')
tocsv = myfile.read()
myfile.close()

keys = tocsv[0].keys()
with open(filename.join('.csv'), 'w+') as outputfile:
    dictwriter = csv.DictWriter(outputfile, keys)
    dictwriter.writeheader()
    dictwriter.writerows(tocsv)
但是,在第7行中,
keys=tocsv[0].keys()
,python将
tocsv
解释为字符串,这阻止了我使用
keys()
函数。我不能在这里使用
eval
,因为这是一个字典列表,所以我被卡住了。欢迎任何帮助

提前感谢。

试试
json.load()
看看dict列表是否是格式正确的json:

import json
with open(filename, 'r') as myfile:
    tocsv = json.load(myfile)
keys = tocsv[0].keys()
...
否则,请尝试使用
ast
模块计算文字:

import ast
with open(filename, 'r') as myfile:
    tocsv = ast.literal_eval(myfile.read())
keys = tocsv[0].keys()
...
注意:字典没有排序,因此键的顺序可能与原始字典的顺序不同。

请尝试
json.load()
并查看dict列表是否为格式正确的json:

import json
with open(filename, 'r') as myfile:
    tocsv = json.load(myfile)
keys = tocsv[0].keys()
...
否则,请尝试使用
ast
模块计算文字:

import ast
with open(filename, 'r') as myfile:
    tocsv = ast.literal_eval(myfile.read())
keys = tocsv[0].keys()
...

注意:字典没有排序,因此键的顺序可能与原始字典的顺序不同。

如果是格式良好的dict列表,可以使用
json.load()
而不是
file.read()
。如果json格式不好,您可以查看
ast.literal\u eval
,将数据转换为
dict
。文件中没有字典列表这样的东西
dict
s是内存中的数据结构。有各种工具,如
json
pickle
,可以将dict的序列化版本写入磁盘。它们甚至可以是python源代码。问题是,你需要知道这个列表的格式,并使用正确的工具进行解码。顺便说一句,在这里发布一个示例可以帮助我们猜测。我不确定
filename.join('.csv')
是否正在做您认为它正在做的事情……如果它是一个格式良好的dict列表,您可以使用
json.load()
而不是
file.read()
。如果json格式不好,您可以查看
ast.literal\u eval
,将数据转换为
dict
。文件中没有字典列表这样的东西
dict
s是内存中的数据结构。有各种工具,如
json
pickle
,可以将dict的序列化版本写入磁盘。它们甚至可以是python源代码。问题是,你需要知道这个列表的格式,并使用正确的工具进行解码。顺便说一句,在这里发布一个示例可以帮助我们猜测。我不确定
filename.join('.csv')
是否正在做您认为它正在做的事情…@Ricardo_Bello我不得不回滚编辑
json.load()
接受文件对象,
json.load()
接受字符串对象。对于
json.load()
@Ricardo\u Bello,使用
myfile.read()
是不正确的,我必须回滚编辑
json.load()
接受文件对象,
json.load()
接受字符串对象。对于
json.load()
,使用
myfile.read()
是不正确的。