一、json文件
中国省份地区json内容如下,内容取自网页
[
...
	{
		"name":"陕西省",
		"city":[
            {
            	"name":西安市,
            	"area":[
            		"莲湖区",
            		...
            	]
				
            }
		]
	}
...
]
 
gihub:更新版本:wecatch/china_regions: 最全最新中国省,市,地区json及sql数据 (github.com)
个人复制的json:「city.json」https://www.aliyundrive.com/s/QJYkLRJXjLR 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
二、实例操作
-  
遍历json内容
# 数据路径 import json path = "D:\\Desktop\\PyCharmWork\\Demo\\work-05-2022-04-15\\city.json" # 读取文件数据 with open(path, "r") as f: #将json对象转化内为python对象,可以理解为将字符串转换为字典 row_data = json.load(f) # 读取每一条json数据 for d in row_data: print(d) -  
输出区
print((row_data[26])['city'][9]['area'][0]) -  
个数
print( len( row_data ) ) #province的个数 34 print( len( row_data[26]['city'] ) )#city的个数 print( len( row_data[26]['city'][9]['area'] ) )#city的个数 -  
一个省-市-区实例
print(row_data[26]['name']) print(row_data[26]['city'][0]['name']) print(row_data[26]['city'][0]['area'][0]) -  
查找陕西省的下标
province=0; for d in row_data: if d['name']=='陕西省': print(province) print(row_data[province]) province += 1 -  
随机生成一个地区
def address(spaceStr = ''): result = '' provinceLen = 34 - 1 provinceIndx = random.randint(0, provinceLen) cityLen = len(row_data[provinceIndx]['city']) - 1 cityIndex = random.randint(0, cityLen) areaLen = len(row_data[provinceIndx]['city'][cityIndex]['area']) - 1 areaIndex = random.randint(0, areaLen) result = row_data[provinceIndx]['name'] + spaceStr + row_data[provinceIndx]['city'][cityIndex]['name'] + spaceStr + \ row_data[provinceIndx]['city'][cityIndex]['area'][areaIndex] return result print( address(' ') )运行结果
海南省 五指山市 五指山 
三、test
# 数据路径
import json
import random
path = "D:\\Desktop\\PyCharmWork\\Demo\\work-05-2022-04-15\\city.json"
# 读取文件数据
with open(path, "r") as f:
    #将json对象转化内为python对象,可以理解为将字符串转换为字典
    row_data = json.load(f)
# 读取每一条json数据
# for d in row_data:
#     print(d)
# print((row_data[26])['city'][9]['area'][0])
# print( len( row_data ) ) #province的个数 34
# print( len( row_data[26]['city'] ) )#city的个数
# print( len( row_data[26]['city'][9]['area'] ) )#area的个数
# print(row_data[26]['name'])
# print(row_data[26]['city'][0]['name'])
# print(row_data[26]['city'][0]['area'][0])
# '''查找 陕西省 的下标'''
# province=0;
# for d in row_data:
#     if d['name']=='陕西省':
#         print(province)
#         print(row_data[province])
#     province += 1
#随机生成一个地区
def address(spaceStr = ''):
    result = ''
    provinceLen = 34 - 1
    provinceIndx = random.randint(0, provinceLen)
    cityLen = len(row_data[provinceIndx]['city']) - 1
    cityIndex = random.randint(0, cityLen)
    areaLen = len(row_data[provinceIndx]['city'][cityIndex]['area']) - 1
    areaIndex = random.randint(0, areaLen)
    result = row_data[provinceIndx]['name'] + spaceStr + row_data[provinceIndx]['city'][cityIndex]['name'] + spaceStr + \
             row_data[provinceIndx]['city'][cityIndex]['area'][areaIndex]
    return result
for i in range(100):
    print(address(' '))
 
参考资料
【1】(101条消息) 全国省市区json读取与解析_周嗨嗨的博客-CSDN博客
【2】wecatch/china_regions: 最全最新中国省,市,地区json及sql数据 (github.com)










