首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Geopy异常处理

Geopy异常处理
EN

Stack Overflow用户
提问于 2012-05-27 07:10:04
回答 1查看 2.2K关注 0票数 1

跟踪(最近一次调用):

"C:\Users\Penguin\workspace\geocode-nojansdatabase\src\geocode.py",文件第15行,在

place,(lat,lng) = g.geocode(a)

"C:\Python27\lib\site-packages\geopy-0.94.2-py2.7.egg\geopy\geocoders\google.py",文件第81行,以地理代码表示

返回self.geocode_url(url,exactly_one)

"C:\Python27\lib\site-packages\geopy-0.94.2-py2.7.egg\geopy\geocoders\google.py",文件第88行,在geocode_url

返回调度(页面,exactly_one)

"C:\Python27\lib\site-packages\geopy-0.94.2-py2.7.egg\geopy\geocoders\google.py",文件第111行,在parse_xml

“(发现%d.)”%len(Places)

ValueError:没有找到确切的一个地名!(发现3.)

当重力场遇到一个它不喜欢的地址时,我的应用程序终止。我想知道的是,如何在Python中捕获异常并允许我的程序转到下一个条目。源代码如下:

代码语言:javascript
复制
import csv
from geopy import geocoders
import time

g = geocoders.Google()

spamReader = csv.reader(open('locations.csv', 'rb'), delimiter='\t', quotechar='|')

f = open("output.txt",'w')

for row in spamReader:
     a = ', '.join(row)
     #exactly_one = False
     time.sleep(1)
     place, (lat, lng) = g.geocode(a)
     b = "\"" + str(place) + "\"" + "," + str(lat) + "," + str(lng) + "\n"
     print b
     f.write(b)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 07:32:30

要使程序忽略ValueError而不是终止它,请替换:

代码语言:javascript
复制
 place, (lat, lng) = g.geocode(a)

通过以下方式:

代码语言:javascript
复制
 try:
     place, (lat, lng) = g.geocode(a)
 except ValueError:
     continue

( continue使其进入for循环的下一个重复,而不是尝试执行当前循环的其余部分--这似乎是正确的做法,因为当前循环的其余部分取决于位置、lat、lng)。

或者,如果您希望它打印一条消息,请使用

代码语言:javascript
复制
 try:
     place, (lat, lng) = g.geocode(a)
 except ValueError as error_message:
     print("Error: geocode failed on input %s with message %s"%(a, error_message))
     continue

或者其他类似的东西。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10772269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档