如何尋找城市所屬的省份或是區(qū)縣所屬的城市
前幾天在做數(shù)據(jù)分析的時(shí)候,有許多城市的數(shù)據(jù)但是需要按照省份來(lái)統(tǒng)計(jì)。但一個(gè)個(gè)查對(duì)應(yīng)的省份可能過(guò)于繁瑣,因此就寫(xiě)了一個(gè)函數(shù)來(lái)解決這個(gè)問(wèn)題,代碼如下:
import requests
def search_city(name="上海",level=3):
res={#一個(gè)字典
}
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 "請(qǐng)重新輸入級(jí)別,1搜索?。?搜索市;3搜索縣"
這個(gè)字典將附在文末,該字典也可以通過(guò)百度地圖的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具體數(shù)值可以通過(guò)在https://lbsyun.baidu.com/注冊(cè)得到,注冊(cè)成功后控制臺(tái)-應(yīng)用管理-我的應(yīng)用-創(chuàng)建應(yīng)用
res=requests.get(url).json()
return res
res=get_data("中國(guó)")
with open("china.json","w+") as p:
json.dump(res,p)
使用的時(shí)候只需要如下操作即可:
import json
with open("china.json","r+") as d:
res=json.load(d)
最后附上data_version為20201101的res數(shù)據(jù)的一部分:
{"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": []}, ......