2013-03-07 4 views
11

я следующая строка, необходимо включить его в список без и «»:питон JSON свалки

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]]}] 
+2

'json.dumps' возвращает' '[{"id": 2, "name": "squats", "wrs": [["99", 8]]}]' для меня. –

+1

Вы уверены, что видите обратную косую черту, а не только кавычки? Например, '' \ "" 'такое же, как' ''''. –

+0

'u' просто указывает, что это строка юникода в python <3.0. Вы уверены, что хотите преобразовать в простые строки? – Tim

ответ

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

не работает! – vikki

+0

'json.loads' должен делать трюк для строки. –

+0

это должно быть' json.loads (json.dumps (str_w_quotes)) ' – webjunkie

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

+0

Почему вы добавляете ответ на вопрос 2 года, который даже не начинает отвечать на заданный вопрос? Это действительно должно быть комментарий в лучшем случае. – Craicerjack

Смежные вопросы