2016-01-24 4 views
1

Я сейчас нахожу программу, которая будет искать погоду. Я пытаюсь создать вариант, где вы можете искать свое местоположение, однако оно, похоже, не работает.Wunderground api search bar

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

Я продолжаю ПОЛУЧАТЬ эту ошибку

ответ

0

Где вы str.input, вам нужно использовать ул (место). Прямо сейчас, если вы перейдете в python repl и наберите str, вы обнаружите, что это зарезервированное ключевое слово. Вы хотите использовать местоположение переменной, которое вы получаете от ввода пользователя, а не объекта str.

+0

ок спасибо, я просто попробовал то, что вы предлагаете, и это, казалось, чтобы решить эту проблему, однако я получите еще одну проблему, которая говорит, что «urllib» не определен. – user3541130

1

Не могу прокомментировать (репутация слишком низкая, так как я только что присоединился к SO), но в отношении вашей проблемы «urllib is not defined» это связано с тем, как вы импортируете функцию urlopen.

Вместо:

urllib.urlopen(url) 

попробовать:

urlopen(url) 

EDIT: Вот ваш код, исправлено:

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) ни к чему. Подсказка: request = urlopen (url) – zebralove79

+0

У меня нет ошибки для urlopen. У меня это как моя ошибка json_string = response.read(). Decode ('utf8') NameError: name 'response' не определен – user3541130