Python

2011-01-15 34 views
7

'daki belirli JSON öğesinin değerini öğrenin Python ve JSON'da yeniyim, bu yüzden clueless ses çıkardığım için özür dilerim. YaniPython

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

: Bu kullanarak

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

Bu cevap sadece bir dize olarak saklanır: Google'dan şu sonuç Translate API ve "translatedText" değerini ayrıştırmasını isterseniz alıyorum evet, tek yapmak istediğim tercüme metnini almak ve bir değişkende saklamak. Python Docs'ı aradım ama çok kafa karıştırıcı görünüyor ve JSON'u bir süper süper JSON nesnesi yerine basit bir dize olarak saklamayı düşünmüyor.

+3

: Eğer docs 'json' modül buldunuz mu? "Temel Kullanım" bölümünü buldunuz mu? Dokümanların "bazı süper cool JSON nesnesinden ziyade JSON'u basit bir dize olarak sakladığını" düşündüğü izlenimini veren "dökümler" ve "yüklerin" açıklamasıyla ilgili neydi? Örneklerin ön taraftaki büyük bir demet yerine her fonksiyon tanımına dahil edilmesi daha yararlı olabilir mi? –

+1

Genel olarak Python belgelerine yeni katılıyorum, bu yüzden işlerin nasıl açıklandığı bana açık değil. PHP/Java belgelerinde, işlevler çok açık bir şekilde organize edilmiş ve tanımlanmış gibi gözükmektedir, ancak bu muhtemelen alıştığım şeydir. Ayrıca evet, örneklerin başlangıçta yerine işlevlerle verildiğinde daha iyi olacağını düşünüyorum çünkü ileride okuyana kadar aslında ne yaptığını net değil. Şimdi yüklerin ne işe yaradığını görebiliyorum, fakat daha önce taradığımda JSON formatlı bir dizgeden ziyade özel bir formatta çekiliyormuş gibi görünüyordu. – Matt

cevap

12

Sen Python json modülü kullanarak bir nesnenin metin ayrıştırabilir> = 2,6: docs iyileştirilmesi çıkarları

>>> 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

Eğer python <= 2.6 kullanıyorsanız, simplejson paketini kullanabilirsiniz. Bu aynı json, ama python standart kütüphanesinde değil. – ikostia

+0

cevabınız sadece aradığım şeydi ... – akki

+0

ve evet, lütfen önerdiğim düzenlemeleri dikkate alınız. Cevaplarınızı okuduktan sonra hala bazı şüphelerim var – akki