在此代码中,由于某种原因,仅为第一个y
语句定义变量if
。我需要知道为什么它说y
没有定义。此外,如果您需要代码来查找WOEID
,请执行此操作。
import urllib2
def make_word(words):
result = ""
for i in words:
result += i
return result
continents = ['asia', 'north%20america', 'south%20america', 'europe', 'asia', 'australia', 'antarctica']
a = raw_input('Put in a place: ')
a = a.lower()
if ' ' in a:
for h in a:
if h == ' ':
y = a.replace(' ', '%20')
page = urllib2.urlopen('http://woeid.rosselliot.co.nz/lookup/%s' % a).read()
f = page.find('Ohio')
if y not in continents:
if f != -1:
start = page.find('woeid="', f) + 7
end = page.find('"', start)
print 'The WOEID for %s: %s' % (a, page[start:end])
if f == -1:
f = page.find('United States')
if f != -1:
start = page.find('woeid="', f) + 7
end = page.find('"', start)
print 'The WOEID for %s: %s' % (a, page[start:end])
if y in continents:
if f == -1:
f = page.find('')
start = page.find('woeid="', f) + 7
print page[start:]
end = page.find('"', start)
print 'The WOEID for %s: %s' % (a, page[start:end])
答案 0 :(得分:3)
您只能在非常具体的情况下定义y
:
if ' ' in a:
for h in a:
if h == ' ':
y = a.replace(' ', '%20')
因此,只有a
中有空格才能生成y
。
不要在此处创建新变量,也不要手动进行网址编码。改为使用urllib.quote()
function:
from urllib import quote
y = quote(a.lower())
您似乎在整个代码中混合了a
和y
。也许你需要在这里使用更有意义的名字:
place = raw_input('Put in a place: ')
place_quoted = quote(place.lower())
page = urllib2.urlopen('http://woeid.rosselliot.co.nz/lookup/%s' % place_quoted).read()
if place_quoted not in continents:
答案 1 :(得分:0)
如果''在:#This条件在您的代码中失败,y
变量未初始化/设置。
如果你不在大陆:#当这一行执行时,它没有y的引用,抛出错误“undefined”
最好在代码开头初始化默认值。
例如:y =无(或)正确处理您的变量。