Подтвердить что ты не робот

Python json dumps

У меня есть следующая строка, нужно превратить ее в список без 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]]}]
4b9b3361

Ответ 1

>>> "[{\"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}]"

Ответ 2

Это работает, но не кажется слишком элегантным.

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

Ответ 3

json.dumps считает, что " является частью строки, а не частью форматирования json.

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

должен предоставить вам:

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

Ответ 4

Упомянутые вами шаги абсолютно подходят для меня:

>>> 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 возвращает результат в соответствии с ожиданием, я использую python 2.7