如何寻找城市所属的省份或是区县所属的城市

这篇博客介绍了一个Python函数,用于根据城市名称查找其所属的省份或区县。作者通过调用百度地图API获取中国行政区域数据,并提供了一个三级检索的函数,分别对应省份、城市和区县。博客中还提供了如何读取和使用这些数据的示例代码。
摘要由CSDN通过智能技术生成

如何寻找城市所属的省份或是区县所属的城市

前几天在做数据分析的时候,有许多城市的数据但是需要按照省份来统计。但一个个查对应的省份可能过于繁琐,因此就写了一个函数来解决这个问题,代码如下:

import requests

def search_city(name="上海",level=3):
    res={#一个字典
         }
    provinces=res["districts"][0]["districts"]
    if (level==1 or level==2 or level==3): 
        res=[]
        for province in provinces:
            cities=province["districts"]
            province_name=province["name"]
            if (name in province_name and level==1):
                res.append({"province_name":province_name})
            for city in cities:
                districts=city["districts"]
                city_name=city["name"]
                if (name in city_name and level==2):
                    res.append({"province_name":province_name,
                                "city_name:":city_name})
                for district in districts:
                    district_name=district["name"]
                    if (name in district_name and level==3):
                        res.append({"province_name":province_name,
                                    "city_name":city_name,
                                    "district_name":district_name})
        return res
    else: 
        return "请重新输入级别,1搜索省;2搜索市;3搜索县"

这个字典将附在文末,该字典也可以通过百度地图的api获取,代码如下:

import requests
import json

def get_data(keyword):
    url='http://api.map.baidu.com/api_region_search/v1/?keyword='+\
    keyword+'&sub_admin=3&ak=         ' 
    #ak具体数值可以通过在https://lbsyun.baidu.com/注册得到,注册成功后控制台-应用管理-我的应用-创建应用
    res=requests.get(url).json()
    return res

res=get_data("中国")
with open("china.json","w+") as p:
    json.dump(res,p)

使用的时候只需要如下操作即可:

import json

with open("china.json","r+") as d:
    res=json.load(d)

最后附上data_version为20201101的res数据的一部分:

{"status": 0, "data_version": "20201101", "result_size": 1, "districts": [{"code": "", "name": "\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd", "level": 0, "districts": [{"code": "", "name": "\u5317\u4eac\u5e02", "level": 1, "districts": [{"code": "", "name": "\u5317\u4eac\u5e02", "level": 2, "districts": [{"code": "", "name": "\u4e1c\u57ce\u533a", "level": 3, "districts": []}, ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值