You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从GeoPy调用Nominatim返回的地理编码结果中提取国家信息

你当前无法直接获取结构化国家信息,是因为调用Nominatim的geocode接口时默认关闭了地址详情返回参数,调整请求参数后即可直接读取官方提供的国家字段,不需要切割display_name字符串。

解决步骤

  • 调用geocode方法时新增addressdetails=True参数,开启后返回结果会携带结构化的地址层级字段,包含国家、省份、邮编等各维度信息。
  • 从返回结果的raw['address']['country']中直接读取国家名称即可。

完整示例代码

from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent='myapplication')
x = 'PA - Cranberry Township'
# 新增addressdetails=True参数开启结构化地址返回
location = geolocator.geocode(x, exactly_one=True, language="english", namedetails=True, addressdetails=True)

# 直接获取国家名称
country_name = location.raw['address']['country']
# 也可获取两位ISO国家编码
country_code = location.raw['address']['country_code']

print(country_name)
# 输出:United States

开启参数后返回的location.raw中会新增address字段,内容示例如下:

'address': {
    'town': 'Cranberry Township',
    'county': 'Butler County',
    'state': 'Pennsylvania',
    'postcode': '16066',
    'country': 'United States',
    'country_code': 'us'
}

该方案是Nominatim官方提供的标准取值方式,完全避免了字符串切割可能出现的格式不兼容问题,鲁棒性更高。


内容的提问来源于stack exchange,提问作者Sid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:18:05