一、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)