2013-03-07 6 views
11
i aşağıdaki dize, '' u olmadan bir liste haline getirmek gerekir gelmiş

:piton json döker

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

i do ardından

import ast 
str_w_quotes = ast.literal_eval(my_str) 

kullanarak:

import json 
json.dumps(str_w_quotes) 

ve almak

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

Ters eğik çizgiden kurtulmanın bir yolu var mı? hedeftir: Eğer

>>> "[{u'name': u'squats', u'wrs': [[u'99', 8]], u'id': 2}]".replace("u\'","\'") 
"[{'name': 'squats', 'wrs': [['99', 8]], 'id': 2}]" 
+2

'json.dumps' döndürür '' [{" id ": 2," name ":" squats "," wrs ": [[" 99 ", 8]]}] ' benim için. –

+1

Sadece kaçışmış alıntılar değil, ters eğik çizgi gördüğünüze emin misiniz? Örneğin, "\" "', "" "ile aynıdır. –

+0

Sadece 'u' python <3.0'da bir unicode dizesi olduğunu belirtir. Basit dizelere dönüştürmek istediğinizden emin misiniz? – Tim

cevap

3
>>> "[{\"id\": 2, \"name\": \"squats\", \"wrs\": [[\"55\", 9]]}]".replace('\\"',"\"") 
'[{"id": 2, "name": "squats", "wrs": [["55", 9]]}]' 

not olduğunu json biçimlendirme.

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

size vermelidir:

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

json.dumps " bir dize değil, parçanın parçası olduğunu düşündüğü orijinal dizesi bunu sadece olabilir

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

yapmayın kontrol edin – vikki

+0

'json.loads 'bir dizge için hile yapmalı –

+0

' json.loads (json.dumps (str_w_quotes)) olmalıdır' – webjunkie

9

Bu işler ama benim için kesinlikle iyi

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

adımlar işleri sözü çok şık görünmüyor:

>>> 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, beklenti başına sonucu döndürür üzerinde, python kullanıyorum 2.7

+0

Neden 2 yaşındaki bir soruya bir cevap ekliyorsunuz sorulan soruya cevap vermeye bile başlamıyor, bu gerçekten en çok yorumda bulunmalı. – Craicerjack