为何提取JSON中'souradnice'坐标时循环报错,单个提取正常?
问题排查与解决方案
1. 代码变量未定义问题
你提供的代码中cz变量未定义,这是直接报错的原因之一。需要从location_data中获取包含souradnice的数据集,比如数据结构里的obce数组,正确的变量引用应为location_data['obce'](取决于JSON实际层级结构)。
2. 数据中存在None值导致循环报错
核心问题是部分条目的souradnice字段为None:单独打印单个坐标时你可能选中了有值的条目,但循环遍历所有条目时,遇到None的条目尝试访问[0]/[1]索引就会触发NoneType错误。
修正后的代码示例
import requests url = 'https://data.cesko.digital/obce/1/obce.json' resp = requests.get(url=url) location_data = resp.json() x = list() y = list() # 遍历数据集中的每个条目,先判断坐标是否有效 for item in location_data['obce']: coords = item.get('souradnice') if coords is not None: y.append(coords[0]) x.append(coords[1])
额外排查建议
- 先打印数据结构确认层级:执行
print(location_data.keys())或print(location_data['obce'][0]),查看单个条目的完整字段结构。 - 统计无坐标数据的数量,方便定位问题:
none_count = sum(1 for item in location_data['obce'] if item.get('souradnice') is None) print(f"共{none_count}条数据无坐标信息")
内容的提问来源于stack exchange,提问作者pappahappa
相关产品推荐
相关产品推荐

