从文件加载Python对象(可能没有类定义)

2024-05-23 17:41:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python完全是个新手。你知道吗

我有以下格式的数据:

ontology = {


  'OBJECT' :


    {'IS-A' : {'VALUE' :'ALL'},


     'SUBCLASSES' : {'VALUE' :['PHYSICAL-OBJECT',


                               'MENTAL-OBJECT','SOCIAL-OBJECT']},


     'THEME-OF' : {'sem' : 'EVENT'}},





 'PHYSICAL-OBJECT' :


    {'IS-A' : {'VALUE' :'OBJECT'},


     'SUBCLASSES' : {'VALUE' :['ANIMATE', 'INANIMATE']},


     'THEME-OF' : {'sem' : 'EVENT'}},
}

我想将所有这些数据加载到Python字典中。 但是如果我用评估的话会出错(文件.read()). 你知道吗

有什么办法我能做到吗?(我没有任何类定义)


Tags: of数据eventobjectisvalue格式all
2条回答

出于安全原因,Eval通常是一个糟糕的计划,最好使用pickle或JSON序列化。你知道吗

但是它不会读取,因为不能用=using eval()赋值变量。如果这是正确的格式,您可以尝试在=之后跳过,并对其余部分求值:

data = open('data.txt').read()
ontology = eval(data[data.find('=')+1:])

Using eval is a really bad idea。改用ast.literal_eval。你知道吗

要使其工作,您必须去掉ontology =部分,这是不需要的。在文件中只留下词典本身。你知道吗

然后,按如下方式加载:

>>> import ast
>>> with open('data.txt') as file:
...     data = ast.literal_eval(file.read())
... 
>>> data
{'PHYSICAL-OBJECT': {'IS-A': {'VALUE': 'OBJECT'}, 'THEME-OF': {'sem': 'EVENT'}, 'SUBCLASSES': {'VALUE': ['ANIMATE', 'INANIMATE']}}, 'OBJECT': {'IS-A': {'VALUE': 'ALL'}, 'THEME-OF': {'sem': 'EVENT'}, 'SUBCLASSES': {'VALUE': ['PHYSICAL-OBJECT', 'MENTAL-OBJECT', 'SOCIAL-OBJECT']}}}

相关问题 更多 >