2016-02-04 60 views
0

我已经尝试了将字符串转换为字典的不同选项。在Python中将字符串转换为字典值错误

我的字符串如下所示:

{'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运行此。还尝试了各种其他选项不工作。任何帮助赞赏。

+1

你得到了正确的答案(使用'ast.literal_eval()'),但你应该真正考虑为什么你首先要有一个Python字典字符串表示。这不是一种传递信息的合理格式。更好地使用JSON或其他_standard_格式。或者至少腌制数据,因为这意味着一个序列化格式。 – BlackJack

回答

0

您应该使用json.loads

import json 
a = '{"severity_label": "Major", "ne_reported_time": 1475424546, "node_id": 54357, "prob_cause_string": null}' 
d = json.loads(a) 

注意我所说的“替代”和无由空

-1

该字符串确实是有效的JSON,我认为,只要使用json.loads功能得到一个字典。

1

实际上这不是JSON。这是一个python对象的表示(如使用repr功能)。

将其转换回python对象最安全的方法是使用ast.literal_eval函数。

相关问题