Python索引器:列表索引超出范围';没有道理
我正在编写一个小python代码来解析来自GoogleMapsAPI的响应,但是我得到了一个“IndexError:list index out-range”错误,这对我来说没有任何意义。对于某些请求,代码是有效的,对于其他一些请求,代码不是有效的 代码的目的是将地址响应构造为随机地址,并放入dict结构中供以后使用 我检查了列表的范围(例如,计数到n-1),但这似乎不是问题Python索引器:列表索引超出范围';没有道理,python,list,Python,List,我正在编写一个小python代码来解析来自GoogleMapsAPI的响应,但是我得到了一个“IndexError:list index out-range”错误,这对我来说没有任何意义。对于某些请求,代码是有效的,对于其他一些请求,代码不是有效的 代码的目的是将地址响应构造为随机地址,并放入dict结构中供以后使用 我检查了列表的范围(例如,计数到n-1),但这似乎不是问题 Exact traceback: Traceback (most recent call last): File "
Exact traceback:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "geoCodeAPI.py", line 67, in getLocation
data[i] = {'formatted_address': formattedAddress[i], 'street': streetname[i], 'street_number': streetnumber[i], 'city': city[i], 'country': country[i], 'lat': lat[i], 'lng': lng[i]}
IndexError: list index out of range
您的列表大小不同。虽然
格式化地址、lat
和lng
与result['results']
的大小相同,但在内部循环中创建了国家、街道编号、街道名称
和城市
,每个s['addresscomponents]
列表。如果选中,可能会为每个格式化地址创建多个“NA”
国家(非国家/地区的每个地址元素一个)。因此,如果在国家/地区
的长度上迭代,则会溢出格式化地址
这对我很有用:
for s in result['results']:
formattedAddress.append(s['formatted_address'])
lat.append(s['geometry']['location']['lat'])
lng.append(s['geometry']['location']['lng'])
country.append("NA")
streetnumber.append("NA")
streetname.append("NA")
city.append("NA")
for foo in s['address_components']:
if foo['types'][0] == "country":
country[-1] = foo['long_name']
if foo['types'][0] == "street_number":
streetnumber[-1] = foo['long_name']
if foo['types'][0] == "route":
streetname[-1] = foo['long_name']
if "locality" in foo['types'][0]:
city[-1] = foo['long_name']
data = dict()
我不知道这是不是一个错误,只在这里显示,但
else:
country.append("NA")
似乎没有正确的缩进,因此无论条件如何,每次都会执行该缩进,并且您的国家/地区列表比任何其他列表都长…我还注意到,当数据中某个点的地址错误时,会发生此错误。因此,包含“tyexcept”块将有助于捕获索引器错误(或任何其他错误),并允许代码继续运行
例如:
try:
'Your Code'
except IndexError:
print("Wrong Address!")
请始终提供完整的错误消息,包括回溯。“”获取“索引器”错误:列表索引超出范围“错误”。“”。杜德,请完整回溯…很抱歉回溯:回溯(最近一次调用):文件“”,第1行,在文件“geoCodeAPI.py”中,第67行,在getLocation数据中[i]={'formatted_address':formattedAddress[i],'street':streetname[i],'street_number':streetnumber[i],'city':city[i],'country[i],'lat':lat[i],'lng[i]}索引器错误:列出索引超出范围编辑您的问题,添加回溯并修复缩进。除了注释:数据可以是字典列表。感谢您提供缩进提示。我改变了缩进。
try:
'Your Code'
except IndexError:
print("Wrong Address!")