2013-03-07 134 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