python分行政区域汇总_Python把行政区域信息处理为层级字典

from xml.dom.minidom import Document

import json,ast

import gb2260

import region

# def createProvinceJson(filename):

# """创建省字典文件"""

# data=region.data

#

# dict_province = {}

# region_codes = data.keys()

# for key in region_codes:

# try:

# division = gb2260.get(key)

# if division != None:

# province_division = division.province

# province_name = province_division.name

# province_code = province_division.code

# if province_name not in dict_province:

# dict_province[province_name] = province_code

# else:

# continue

# except Exception:

# continue

# with open(filename, 'w', encoding="utf-8") as f:

# f.write(str(dict_province))

# f.close()

#

# def createProvinceToXml(filename):

# """"创建包含省的xml文件"""

# doc = Document()

# countryRegion = doc.createElement('CountryRegion')

# doc.appendChild(countryRegion)

# countryRegion.setAttribute('Code', '1')

# countryRegion.setAttribute('Name', '中国')

#

#

# with open('pro_json.json','r',encoding='utf-8') as city_json:

# cities=city_json.read()

# cities_dict=ast.literal_eval(cities)

# # cities=dict(cities)

# print(type(cities_dict))

# print(cities_dict)

# pros=cities_dict.keys()

# pros=list(pros)

#

#

# for p in pros:

# state = doc.createElement("State")

# countryRegion.appendChild(state)

# state.setAttribute('Code', cities_dict[p])

# state.setAttribute('Name',p)

# with open(filename,'wb') as f:

# f.write(doc.toprettyxml(indent='\t',encoding='utf-8'))

def turnRegionToJson(json_file):

"""

data={

listdata:[

{"province_name":"北京市","province_code":"100000","data":[

{"city_name":"市辖区","city_code":"101100","data":[

{

"region_name":"东城区","region_code":"101111"

}

,

{}

]}

]},

{}

]

}

"""

#获取

data=region.data

list_city = []

list_province=[]

list_dict_province=[]

region_codes = data.keys()

for key in region_codes:

dict_region = {}

dict_city = {}

dict_province = {}

try:

division = gb2260.get(key)

"""通过gb2260获取区域码的城市和省份编码"""

if division != None and division.county.name!=None :

region_name = division.county.name

region_code = division.county.code

#获取市级单位信息

city_division = division.prefecture

city_name = city_division.name

city_code = city_division.code

#获取省份信息

province_division = division.province

province_name = province_division.name

province_code = province_division.code

#把县区信息放到字典

dict_region = {"region_name":region_name,"region_code":region_code}

# list_region.append(dict_region)

#把省份信息放入列表

if province_code not in list_province:

list_province.append(province_code)

dict_province["province_name"] = province_name

dict_province["province_code"]=province_code

dict_province["data"]=[]

list_dict_province.append(dict_province)

#把市信息放入列表

if city_code not in list_city:

list_city.append(city_code)

dict_city['city_name']=city_name

dict_city['city_code']=city_code

dict_city['data']=[]

# print(dict_city)

for tmp_province in list_dict_province:

if tmp_province['province_code'] == province_code:

# print(tem_province['province_name'])

tmp_list_city=tmp_province["data"]

tmp_list_city.append(dict_city)

tmp_province['data']=tmp_list_city

# print(tmp_province['data'])

#添加city信息到省份下面

for tmp_province in list_dict_province:

if tmp_province['province_code']==province_code:

tmp_cities=tmp_province['data']

for tmp_city in tmp_cities:

if tmp_city['city_code']==city_code:

tmp_region_list=tmp_city['data']

tmp_region_list.append(dict_region)

tmp_city['data']=tmp_region_list

else:

continue

except Exception:

continue

dict_data={"listdata":list_dict_province}

dict_data=json.dumps(dict_data,indent=4,separators=(',',':')).encode('utf-8').decode('raw_unicode_escape')

with open(json_file, 'w', encoding="utf-8") as f:

f.write(dict_data)

return dict_data

if __name__=="__main__":

a=createCityToXml('dict_city.json')

print(a)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值