2016-02-04 93 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函數。

相關問題