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]]}]
Ответы
Ответ 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