2016-01-24 114 views
1

我目前正在撰寫一個搜索天氣的程序。 我試圖創建一個選項,您可以搜索您的位置,但它似乎並沒有工作。Wunderground api搜索欄

from urllib.request import Request, urlopen 
    import json 
    import re 
    location = input('location you would like to know the weather for') 

API_KEY = '<API-KEY>' 
url = 'http://python-weather-api.googlecode.com/svn/trunk/ python-weather-api' + API_KEY +'/geolookup/conditions/q/IA/'+ location +'.json' 


response = urllib.request.Request(url) 


def response as request(url) 
json_string = response.read().decode('utf8') 
parsed_json = json.loads(json_string) 
location = parsed_json['location']['city'] 


temp_f = parsed_json['current_observation']['temp_f'] 
print("Current temperature in %s is: %s" % (location, temp_f)) 
response.close() 

我一直在recieving此錯誤

回答

0

如果你已經str.input,你需要使用STR(位置)。現在,如果你進入python repl並鍵入str,你會發現它是一個保留關鍵字。你想使用從用戶輸入而不是str對象獲得的變量位置。

+0

好,謝謝,它似乎解決這個問題,但是我會收到另一個說明'urllib'未定義的問題。 – user3541130

1

不能評論(聲譽太低,因爲我剛加入SO),但關於你的「urllib沒有定義」的問題,這與你如何導入urlopen函數有關。

相反的:

urllib.urlopen(url) 

嘗試:

urlopen(url) 

編輯:這是你的代碼,固定:

from urllib.request import urlopen 
import json 

location = input('location you would like to know the weather for') 

API_KEY = '<API-KEY>' 
url = 'http://api.wunderground.com/api/' + API_KEY + '/geolookup/conditions/q/IA/'+ str(location) +'.json' 

response = urlopen(url) 

json_string = response.read().decode('utf8') 
parsed_json = json.loads(json_string) 
location = parsed_json['location']['city'] 
temp_f = parsed_json['current_observation']['temp_f'] 
print("Current temperature in %s is: %s" % (location, temp_f)) 

工作正常的多摩,在IA其他城市。不過請注意,Des Moines這樣的地名將無法使用,因爲URL中不允許有空格 - 您必須注意這一點。 (API的示例建議_用於空間http://www.wunderground.com/weather/api/d/docs?MR=1)。祝你好運!

+0

我試過這個,但是它回來的錯誤是 NameError:name'response'沒有被定義 – user3541130

+0

這是因爲你沒有把你的urlopen(url)分配給任何東西。提示:請求= urlopen(url) – zebralove79

+0

我沒有爲urlopen錯誤。我有這個作爲我的錯誤 json_string = response.read()。decode('utf8') NameError:name'response'is not defined – user3541130