在 Python 中解析单个 qouted 字典键和值

Parse single qouted dictionary key and value in Python

提问人:Hemant Kumar 提问时间:4/27/2020 最后编辑:juanpa.arrivillagaHemant Kumar 更新时间:4/27/2020 访问量:50

问:

我有一个 Python 字典

original_dict={'body': '{"infra":["dev4","elk"],{"type":"file_integrity"}'}

我希望能够将original_dict键和值解析为普通字典,而我现在无法做到,因为“body”键有一个转换为字符串的字典,因此我没有引用它的任何键。所以我应该可以说:

infra=original_dict['body]['infra']

谁能帮我解决这个问题。

python json python-3.x 字典 字符串解析

评论

0赞 cs95 4/27/2020
用于转换值,然后访问其值?json.loads
1赞 cs95 4/27/2020
json.loads(original_dict['body'])['infra']
0赞 Hemant Kumar 4/27/2020
@cs95:谢谢你的帮助,但我无法让它工作。这也是我的代码和错误: import json original_dict={'body': '{“infra”:[“dev4”,“elk”],{“type”:“file_integrity”}'} print(json.loads(original_dict['body'])['infra']) Error:json.decoder.JSONDecodeError:Expecting property name enclosed in double qouted
0赞 cs95 4/27/2020
这不是有效的 JSON,因此它不起作用。尝试使用真实有效的 JSON 数据。

答:

1赞 Sachin Gupta 4/27/2020 #1

首先,您在original_dict缺少一个卷曲的支架。 下面是将字符串转换为字典的示例。

    import json
    original_dict={'body':'{"infra":["dev4","elk"],"type":"file_integrity"}'}
    original_dict['body'] = json.loads(original_dict['body'])
    infra=original_dict['body']['infra']
    print(infra)

输出 : ['dev4', 'elk']

1赞 Erfan 4/27/2020 #2

你也可以使用 ast :)

import ast 
original_dict = {'body': '{"infra":["dev4","elk"],"type":"file_integrity"}'}
original_dict['body'] = ast.literal_eval(original_dict['body'])