繁体   English   中英

如何在地址解析循环中捕获错误并继续循环

[英]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'}

我试图用一个tryexcept象下面的方案:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM