在Python值错误中将字符串转换为字典

时间:2016-02-04 11:25:05

标签: python python-3.x

我尝试过将字符串转换为字典的不同选项。

我的字符串如下所示:

{'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上运行它。还尝试了各种其他选项不起作用。任何帮助表示赞赏。

4 个答案:

答案 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功能即可获取字典。