2013-03-07 124 views
11

我有以下字符串,需要把它變成一個列表,而U「」:使用蟒蛇JSON轉儲

import ast 
str_w_quotes = ast.literal_eval(my_str) 

然後我做

my_str = "[{u'name': u'squats', u'wrs': [[u'99', 8]], u'id': 2}]" 

我可以擺脫「:

import json 
json.dumps(str_w_quotes) 

,並得到

[{\"id\": 2, \"name\": \"squats\", \"wrs\": [[\"55\", 9]]}] 

有沒有辦法擺脫反斜槓?我們的目標是:

[{"id": 2, "name": "squats", "wrs": [["55", 9]]}] 
+2

'json.dumps'返回''[{「id」:2,「name」:「squats」,「wrs」:[[「99」,8]]}]' '對我來說。 – 2013-03-07 13:37:33

+1

你確定你看到反斜槓,而不是隻是逃脫報價?例如'「\」「'與''」''相同。 – 2013-03-07 13:39:54

+0

'u'只是表示它是python <3.0中的unicode字符串。你確定你想轉換爲簡單的字符串嗎? – Tim 2013-03-07 13:39:58

回答

3
>>> "[{\"id\": 2, \"name\": \"squats\", \"wrs\": [[\"55\", 9]]}]".replace('\\"',"\"") 
'[{"id": 2, "name": "squats", "wrs": [["55", 9]]}]' 

注意,你可能只是這樣做對原字符串

>>> "[{u'name': u'squats', u'wrs': [[u'99', 8]], u'id': 2}]".replace("u\'","\'") 
"[{'name': 'squats', 'wrs': [['99', 8]], 'id': 2}]" 
5

json.dumps認爲,"是一個字符串,而不是部分的一部分json格式。

import json 
json.dumps(json.load(str_w_quotes)) 

應該給你:

[{"id": 2, "name": "squats", "wrs": [["55", 9]]}] 
+0

This不工作! – vikki 2014-05-04 12:00:36

+0

'json.loads'應該爲字符串做訣竅。 – 2017-02-23 23:59:39

+0

它應該是'json.loads(json.dumps(str_w_quotes))' – webjunkie 2018-02-12 22:32:56

9

這工作,但似乎並沒有太高雅了你提到的作品

import json 
json.dumps(json.JSONDecoder().decode(str_w_quotes)) 
1

步驟絕對對我罰款:

>>> import ast 
>>> str_w_quotes = ast.literal_eval(my_str) 
>>> str_w_quotes 
[{u'id': 2, u'name': u'squats', u'wrs': [[u'99', 8]]}] 
>>> import json 
>>> json.dumps(str_w_quotes) 
'[{"id": 2, "name": "squats", "wrs": [["99", 8]]}]' 

json.dumps根據expectati返回結果我正在使用Python 2.7

+0

爲什麼你要給一個2歲的問題添加一個答案,甚至不會開始回答所問的問題?這應該是最多的評論。 – Craicerjack 2015-07-01 13:54:37