2016-04-14 29 views
0

Ben API'lerini öğrenmeye çalışıyorum ve ben verir http://api.zippopotam.us/us/90210 için bir çağrısı:Ayrıştırma DİNLENME API sonuç piton

{"post code": "90210", "country": "United States", "country abbreviation": "US", "places": [{"place name": "Beverly Hills", "longitude": "-118.4065", "state": "California", "state abbreviation": "CA", "latitude": "34.0901"}]} 

API "yer" dönmek için ülkeyi (ABD) ve posta kodunu kullanır. Ben şöyle bir değişkene "yer" segmentini ayrıştırmaya çalıştık: `: "Dize endeksleri tamsayı olmalı TypeError"

for item in api_return: 
    place = item['place'] 

Ancak, ben belirten bir hata mesajı alabilirsiniz. Bu uzun listeyi "yer adı", "durum" vb. Ayıklamak için ayrıştırmanın başka bir yolu var mı?

Şimdiden teşekkürler!

+0

Elinizde bir json dizgisi var. Json verilerini python nesnelerine dönüştürmek için bir json ayrıştırıcısına ihtiyacınız vardır. Http://docs.python-guide.org/en/latest/scenarios/json/ adresinden ayrıştırmak için json modülünü kullanan (çok) basit öğreticiye bakınız. – Munir

cevap

1

Bu yanıt alıntı: bazı küçük farklılıklardan dolayı Python 3.x kullanıyorsanız

for key in d : will simply loop over the keys in the dictionary, rather than the keys and values. To loop over both key and value you can use the following:

for key, value in d.iteritems():

https://stackoverflow.com/a/3294899/3474873 gerçek cevabı bakın. senin durumunda Şimdi

. Her şeyden önce, api_return numaralı telefondan "place" isimli bir anahtar yoktur. Doğru yapmış olsan bile, hala bir hata olurdu. size o zaman, yalnızca bir değer gerekiyorsa

for key, value in d.iteritems(): 
    if (key == "places"): 
     places = value 
    elif ... 

: Tüm verilere erişmek gerekiyorsa

sonra basit yolu döngü aşağıdaki gibi tüm anahtarları kontrol etmek içinde bir eğer deyimi eklemektir döngü atlayıp çalıştırabilirsiniz:

places = api_return['places'] 

gösterilen snippet'lerinin Hem places[0] başka bir sözlük ve sadece yukarıdaki gibi keşfedilebilir places, bunu api_return['places'] içinde bulunan iç dizi döndürür ve depolayacak .

DÜZENLEME: karışıklığı önlemek için, aynı zamanda mightyKeyboard aşağıda göstermiştir tıpkı json kullanılarak alınan dize ayrıştırmak gerekiyor.

0
import json 

data_str = '{"post code": "90210", "country": "United States", "country abbreviation": "US", "places": [{"place name": "Beverly Hills", "longitude": "-118.4065", "state": "California", "state abbreviation": "CA", "latitude": "34.0901"}]}' 

data_json = json.loads(data_str) 

for item in data_json['places']: 
    print item['place name'] 

#you can access the 'places' key-vals via the following, but 
#it's not that pretty 
print data_str['places'][0]['place name']