2014-10-08 4 views
0

Я пытаюсь получить температуру от источника json. Это вложенный, и я не могу понять, как получить вложенное значение из файла JSON или URL Так вот идет мой код до сих пор:Как извлечь значение в вложенном источнике json?

#! /usr/bin/python 
    import urllib2 
    import json 
    f = urllib2.urlopen('http://api.openweathermap.org/data/2.5/find?q=London&units=metric') 
    json_string = f.read() 
    parsed_json = json.loads(json_string) 
    temp = parsed_json['list'] 
    print "Current temperature is: %s" % (temp) 
    f.close() 

Прямо сейчас я могу получить все значения сразу, а не просто конкретное значение (темп в моем случае) Я предпочитаю получать чистоту без u'temp ': если это возможно.

+1

Отлично @ b4hand Это решило мое дело легко и приятно. Я на самом деле боюсь часами с этим :-) – ksp

+0

Если бы у вас был [объективный способ показать признательность] (http://stackoverflow.com/help/accepted-answer) для ответа. – b4hand

ответ

0

u'temp' как Python представляет unicode объекты, в которые строки JSON обрабатываются в Python. Это то, что вы ищете?

print temp[0]['main']['temp'] 

Я не знаю структуру API вы звоните, так что это может делать довольно много предположений, но это поможет вам необработанную температуру.

0

Вы получаете несколько значений обратно. Для того, чтобы перечислить их все сделать:

import urllib2 
import json 

f = urllib2.urlopen('http://api.openweathermap.org/data/2.5/find?q=London&units=metric') 
json_string = f.read() 
parsed_json = json.loads(json_string) 
for each in parsed_json['list']: 
    country = each['sys']['country'] 
    temperature = each['main']['temp'] 
    print "Current Temperature in {} is {}".format(country, temperature) 

Выход

Current Temperature in CA is 11.73 
Current Temperature in GB is 11.8 
Смежные вопросы