28

我有以下字符串,需要将其转换为没有 u'' 的列表:

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

我可以通过使用摆脱“

import ast
str_w_quotes = ast.literal_eval(my_str)

然后我做:

import json
json.dumps(str_w_quotes)

并得到

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

有没有办法摆脱反斜杠?目标是:

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

4 回答 4

19

这有效,但似乎不太优雅

import json
json.dumps(json.JSONDecoder().decode(str_w_quotes))
于 2014-07-17T09:42:13.203 回答
13

json.dumps 认为它"​​是字符串的一部分,而不是 json 格式的一部分。

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

应该给你:

 [{"id": 2, "name": "squats", "wrs": [["55", 9]]}]
于 2014-05-01T21:56:44.833 回答
9

您不会将字符串转储为 JSON,而是将字符串加载为 JSON。

import json
json.loads(str_w_quotes)

您的字符串已经是 JSON 格式。您不想再次将其转储为 JSON。

于 2018-04-05T02:25:06.743 回答
6
>>> "[{\"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}]"
于 2013-03-07T13:32:17.740 回答