用Python从文件中读取字典的书面列表

用Python从文件中读取字典的书面列表,python,list,dictionary,Python,List,Dictionary,我有一个文件,它是这样一个字典列表: 嵌套字典和列表的列表中可以包含多个dict和列表。我想读取用python编写的文件,并创建一个数据结构(字典列表)。如果知道它不是json,但它已通过file.write(str(list))写入文件,怎么办我们想从文件中读取列表的位置?如果json失败,但您知道这是有效的,您可以尝试: random_string = "{'a':'1', 'b':'2', 'c':['3', '4']}" intended_output = eval(random_st

我有一个文件,它是这样一个字典列表:


嵌套字典和列表的列表中可以包含多个dict和列表。我想读取用python编写的文件,并创建一个数据结构(字典列表)。如果知道它不是json,但它已通过
file.write(str(list))写入文件,怎么办
我们想从文件中读取列表的位置?

如果json失败,但您知道这是有效的,您可以尝试:

random_string = "{'a':'1', 'b':'2', 'c':['3', '4']}"
intended_output = eval(random_string)

print intended_output['c'][0]
这是一种将Python文本评估为实际数据结构的安全方法

即:

import ast

with open('file.txt') as f:
    data = ast.literal_eval(f.read())

如果您有超出支持类型的内容(字符串、字节、数字、元组、列表、dicts、set、boolean和
None
),你可以。

可能是个愚蠢的问题,但你是否尝试过通过连接文件中的每一行来重建字符串?该文件是字典列表中的一行。我当时很困惑。Randy C的答案应该可以,你的字典是以两段代码呈现的,所以我假设问题是被
\n
拆分的。g是什么
json.load
有问题吗?你能将文件作为单个字符串读回吗?在这种情况下,你可以使用
json.dumps(string)
这不是JavaScript对象表示法,而是“Python文本表示法”。我仍在学习中;你能解释一下与我刚才使用
eval()的回答相比,这种方法“安全”的方式吗
?如果文本来源不可信,则使用
eval()
它可以包含任何python代码,包括在您的系统上安装恶意软件。
literal\u eval
拒绝任何不是我答案中所列类型的文本/常量的python代码。这仍然让我有点困惑。我知道这不是OP的问题,但我不明白您如何,例如,隐藏
打印语句,然后由您可能对数据结构执行的任何操作执行该语句无需终止谢谢:)