2011-01-15 23 views
7

Jestem nowy w Pythonie i JSON, więc przykro mi, jeśli zabrzmi to nieświadomie. Dostaję następujący wynik z Google Translate API i chcą analizować na wartość „translatedText”:Uzyskaj wartość konkretnego elementu JSON w Pythonie

{ 
"data": { 
    "translations": [ 
    { 
    "translatedText": "Toute votre base sont appartiennent à nous" 
    } 
    ] 
} 
} 

Ta odpowiedź jest po prostu przechowywane jako ciąg znaków za pomocą tego:

response = urllib2.urlopen(translateUrl) 
translateResponse = response.read() 

Tak tak, wszystko, co chcę zrobić, to uzyskać przetłumaczony tekst i zapisać go w zmiennej. Przeszukałem Python Docs, ale wydaje się to być mylące i nie wydaje mi się, aby JSON był przechowywany jako prosty ciąg znaków, a nie jakaś super fajna obiekt JSON.

+3

W trosce o poprawę docs: Znalazłaś 'json' moduł w docs? Czy znalazłeś sekcję "Podstawowe użycie"? Co było takiego w opisie "zrzutów" i "ładunków", które sprawiały wrażenie, że doktorzy "nie traktowali JSON-a jako zwykłego ciągu znaków, a nie jakiegoś super fajnego obiektu JSON"? Czy byłoby lepiej, gdyby przykłady zostały dołączone do każdej definicji funkcji, zamiast do jednej dużej grupy z przodu? –

+1

Cóż, jestem nowy w dokumentach Pythona, więc nie jest dla mnie jasne, w jaki sposób są opisane. W dokumentach PHP/Java funkcje wydają się wyraźnie uporządkowane i zdefiniowane, ale prawdopodobnie to jest właśnie to, do czego jestem przyzwyczajony. Tak, tak, myślę, że byłoby lepiej, gdyby przykłady zostały podane z funkcjami zamiast na początku, ponieważ nie jest jasne, co robią, dopóki nie przeczytasz dalej. Teraz widzę, co robi funkcja load, ale kiedy skanowałem wcześniej, wyglądało to tak, jakby przyjmowało format specjalny, a nie sformatowany ciąg JSON. – Matt

Odpowiedz

12

Można analizować tekst do obiektu przy użyciu modułu json w Pythonie> = 2.6:

>>> import json 
>>> translation = json.loads("""{ 
... "data": { 
... "translations": [ 
... { 
...  "translatedText": "Toute votre base sont appartiennent nous" 
... }, 
... { 
...  "translate": "¡Qué bien!" 
... } 
... ] 
... } 
... } 
... """) 
>>> translation 
{u'data': {u'translations': [{u'translatedText': u'Toute votre base sont appartiennent nous'}]}} 
>>> translation[u'data'][u'translations'][0][u'translatedText'] 
u'Toute votre base sont appartiennent nous' 
>>> translation[u'data'][u'translations'][1][u'translate'] 
u'¡Qué bien!' 
+0

Jeśli masz python <= 2.6, możesz użyć pakietu simplejson. To samo json, ale nie w standardowej bibliotece Pythona. – ikostia

+0

twoja odpowiedź była właśnie tym, czego szukałem .. dzięki – akki

+0

i tak, proszę weź pod uwagę zmiany, które zasugerowałem .. wyjaśnią pewne wątpliwości, które wciąż miałem po przeczytaniu twojej odpowiedzi – akki

Powiązane problemy