[英]How to catch the error in loop of geocode and continue the loop
我是python的新手,和往常一样,我遇到了一些麻烦。 我正在尝试使用循环将api.geocode(place)
的结果存储到列表location
,但是当找不到与该位置匹配的内容时,循环将停止。 这是一个最小的例子。
from gmaps import Geocoding
api = Geocoding(api_key = 'API Key')
address = ["Philippines", "Canada", "No place like this, Australia", "Malaysia"]
location = []
for place in address:
location.append(api.geocode(place))
这将引发此错误:
Traceback (most recent call last):
File "<ipython-input-54-8a375b31e18c>", line 2, in <module>
location.append(api.geocode(place))
File "/home/quack/anaconda3/lib/python3.6/site-packages/gmaps/geocoding.py", line 37, in geocode
return self._make_request(self.GEOCODE_URL, parameters, "results")
File "/home/quack/anaconda3/lib/python3.6/site-packages/gmaps/client.py", line 89, in _make_request
)(response)
NoResults: {'results': [], 'status': 'ZERO_RESULTS', 'url': 'https://maps.googleapis.com/maps/api/geocode/json?address=No+place+like+this%2C+Australia&sensor=false&key=AIzaSyA-lk2z3VIZuKAq27ooswFPqjIKUDlMC2M'}
我试图用一个try
和except
象下面的方案:
for place in address:
try:
location.append(api.geocode(place))
except:
pass
这将得出长度为3的列表location
。我如何在No place like this, Australia
这样的No place like this, Australia
中用NoResult
代替结果No place like this, Australia
并继续循环?
如果我正确理解您的问题:
from gmaps import Geocoding
api = Geocoding(api_key = 'API Key')
address = ["Philippines", "Canada", "No place like this, Australia", "Malaysia"]
location = []
for place in address:
try:
location.append(api.geocode(place))
except Exception as e:
location.append("No Result")
但更好的方法是:
from gmaps import Geocoding
api = Geocoding(api_key = 'API Key')
address = ["Philippines", "Canada", "No place like this, Australia", "Malaysia"]
location = {}
for place in address:
try:
location[place] = api.geocode(place)
except Exception as e:
location[place] = "No Result"
建一本字典,让您可以看到不存在的地方。
您可以将引发的NoResults
异常添加到您的location
列表。
for place in address:
try:
location.append(api.geocode(place))
except Exception as exc:
location.append(exc)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.