我正在尝试从 CSV 文件中读取 List 字典。 我正在尝试访问如下数据结构:
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 语法定义了字典、列表、元组、集合和字符串、数字、 bool 值和 None。
