我尝试过将字符串转换为字典的不同选项。
我的字符串如下所示:
{'severity_label': 'Major', 'ne_reported_time': 1475424546, 'node_id': 54357, 'prob_cause_string': None}
当我使用
时 a_dict = dict([x.strip('{}').split(":"),])
它给了我一个错误:
Traceback (most recent call last):
File "<pyshell#168>", line 1, in <module>
a_dict = dict([x.strip('{}').split(":"),])
ValueError: dictionary update sequence element #0 has length 121; 2 is required
我在Python3上运行它。还尝试了各种其他选项不起作用。任何帮助表示赞赏。
答案 0 :(得分:1)
实际上这不是JSON。这是python对象的表示(比如使用repr
函数)。
将此转换回python对象的最安全方法是使用ast.literal_eval
函数。
答案 1 :(得分:0)
您应该使用 json.loads
import json
a = '{"severity_label": "Major", "ne_reported_time": 1475424546, "node_id": 54357, "prob_cause_string": null}'
d = json.loads(a)
注意我已经更换了&#39; by&#34;和null
答案 2 :(得分:0)
为什么不使用Python 3内置的 ast 库函数 literal_eval 。最好使用 literal_eval 代替eval
import ast
str_of_dict = "{'key1': 'key1value', 'key2': 'key2value'}"
ast.literal_eval(str_of_dict)
将输出为实际字典
{'key1': 'key1value', 'key2': 'key2value'}
这很容易。
答案 3 :(得分:-1)
我认为该字符串确实是有效的JSON。只需使用json.loads
功能即可获取字典。