尝试从打印的函数返回JSON值,但不从函数返回

时间:2017-05-21 12:26:46

标签: python python-3.x

我尝试返回JSON,因此我可以将返回值存储到变量中,但JSON变量得到print但不返回值。 或者还有其他方法可以将这些变量提取到除全局变量之外的其他函数。

CODE

import json
import urllib.request

class Weather:
    def set_api(self):
        url =   'http://api.wunderground.com/api/8187218c2aca04ca/geolookup/conditions/q/IA/Cedar_Rapids.json'
        f = urllib.request.urlopen(url)
        json_string = f.read()
        parsed_json = json.loads(json_string)
        location = parsed_json['location']['city']
        temp_c = parsed_json['current_observation']['temp_c']
        print (location, temp_c)                             #WORKING
        return location,temp_c                               #NOT WORKING
        f.close()

myweather = Weather()
myweather.set_api()

输出

Cedar Rapids 10.2 #print output

2 个答案:

答案 0 :(得分:0)

您正在返回该值但丢弃该值。应该更正为。

myweather = Weather()
location, temp_c = myweather.set_api()

再见,你的f.close无法到达

    return location,temp_c                               # WORKING
    f.close()

答案 1 :(得分:-1)

我修复了它返回的代码,但它已保存在变量中,然后需要打印或传递给其他函数。 实际上我想要整个JSON,因此我需要从列表字典中获取必填字段。

CODE

import json
import urllib.request

class Weather:
    def set_api(self):
        url =   'http://api.wunderground.com/api/8187218c2aca04ca/geolookup/conditions/q/IA/Cedar_Rapids.json'
        f = urllib.request.urlopen(url)
        json_string = f.read()
        parsed_json = json.loads(json_string)
        return parsed_json                               
        f.close()

myweather = Weather()
yoweather = myweather.set_api()
print(yoweather['location']['city'],yoweather['current_observation']['temp_c'])

输出

Cedar Rapids 10.0