我正在制作一个简单的python脚本,该脚本将要求一个邮政编码,并将实现该邮政编码的纬度和经度的天气返回到weather.gov url中,从而可以获取天气。我还是一个初学者,所以这可能是一个非常简单的修复。到目前为止,我将解释我的代码。我已经完成了Beautiful Soup的工作,这只是将邮政编码实现为lat和long。
这将导入搜索引擎:
from uszipcode import SearchEngine
这指定了简单的邮政编码:
search = SearchEngine(simple_zipcode=True)
这指定了相关的邮政编码:
zipcode = search.by_zipcode("11217")
这将获取邮政编码,获取其数据,将其转换成字典,然后将其存储到变量中:
latLong = zipcode.to_dict
这将从字典中获取经度和纬度并将其存储在变量中:
lat = latLong['lat']
long = latLong['long']
最后,这将lat和long放在了BeautifulSoup的url中,这很神奇:
my_url = 'https://forecast.weather.gov/MapClick.php?lat=' + lat + '&lon=' + long + '#.XGTPH1xKiUk'
如您所见,我正在使用uszipcode库。 (以下是链接:https://uszipcode.readthedocs.io/?badge=latest)
需要注意的另一件事是,如果您调用latLong变量,将会得到以下结果:
<bound method ExtendedBase.to_dict of SimpleZipcode(zipcode='11217', zipcode_type='Standard', major_city='Brooklyn', post_office_city='Brooklyn, NY', common_city_list=['Brooklyn'], county='Kings County', state='NY', lat=40.68, lng=-73.98, timezone='Eastern', radius_in_miles=0.9090909090909091, area_code_list=['646', '718'], population=35881, population_density=47796.0, land_area_in_sqmi=0.75, water_area_in_sqmi=0.0, housing_units=17581, occupied_housing_units=16269, median_home_value=857000, median_household_income=81862, bounds_west=-73.990867, bounds_east=-73.97064, bounds_north=40.689901, bounds_south=40.672639)>
好吧,这是我的问题:每当我尝试调用字典中变量的方法/值(又名lat = latLong ['lat'])时,都会弹出此错误消息:
Traceback (most recent call last):
File "c:\Users\bobko\Desktop\Hello\Test.py", line 8, in <module>
lat = zipcode.to_dict['lat']
TypeError: 'method' object is not subscriptable
我不明白我在做什么错。有人可以帮忙吗? 附带说明:我还没有实现输入功能,我只是想看看它是否还能工作。
答案 0 :(得分:2)
以下内容适用于我。
您必须通过添加括号来调用to_dict
方法,并且该属性不是“ long”,而是“ lng”
from uszipcode import SearchEngine
search = SearchEngine(simple_zipcode=True)
zipcode = search.by_zipcode("11217")
latLong = zipcode.to_dict()
lat = latLong['lat']
long = latLong['lng']
答案 1 :(得分:1)
您应该通过在方法名称后面加上括号来调用该方法:
latLong = zipcode.to_dict()
否则,您仅将方法对象分配给latLong
,因此会出现错误。
答案 2 :(得分:0)
zipcode.to_dict
是一种方法。您必须调用它,即zipcode.to_dict()
。
在没有括号的情况下,您引用该方法,而不是调用该方法。