Python - 从CSV读取列表字典
问题描述:
我想从CSV文件读取列表字典。 我试图访问数据结构,如:Python - 从CSV读取列表字典
dbfree = {u'keyname': [u'x', 'y', 'z']}
结构都存储在一个CSV这个代码文件,这些数据:
for key, val in dbfree.items():
w.writerow([key, val])
我这样读CSV:
dbproj = {}
for key, val in unicodecsv.reader(open(filename)):
dbproj[key] = val
但输出是这样的:
{u'key name': u"[u'x', 'y', 'z']"
如何从CSV文件中正确检索列表的完整字典?
答
你写的repr()
输出嵌套列表的位置:
for key, val in dbfree.items():
w.writerow([key, val])
这里val
是[u'x', 'y', 'z']
;将其存储在一列中csv
文件只是简单地写出repr(val)
的结果。
您可以在串再次与ast.literal_eval()
function解码为Python对象:
import ast
dbproj = {}
for key, val in unicodecsv.reader(open(filename)):
dbproj[key] = ast.literal_eval(val)
ast.literal_eval()
解释输入为Python表达,但限于文字,Python语法的对象定义如字典,列表,元组,集合和字符串,数字,布尔值和None
。
答
你需要反序列化值,你可以使用json
模块:
import json
for key, val in dbfree.items():
w.writerow([key, json.dumps(val)])
阅读:
dbproj = {}
for key, val in unicodecsv.reader(open(filename)):
dbproj[key] = json.loads(val)