0
点赞
收藏
分享

微信扫一扫

python操作json-以省份地区为实例

产品喵dandan米娜 2022-04-15 阅读 29
python

一、json文件

中国省份地区json内容如下,内容取自网页

[
...
	{
		"name":"陕西省",
		"city":[
            {
            	"name":西安市,
            	"area":[
            		"莲湖区",
            		...
            	]
				
            }
		]
	}
...
]

gihub:更新版本:wecatch/china_regions: 最全最新中国省,市,地区json及sql数据 (github.com)

个人复制的json:「city.json」https://www.aliyundrive.com/s/QJYkLRJXjLR 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

二、实例操作

  1. 遍历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)
    
  2. 输出区

    print((row_data[26])['city'][9]['area'][0])
    
  3. 个数

    print( len( row_data ) ) #province的个数 34
    print( len( row_data[26]['city'] ) )#city的个数
    print( len( row_data[26]['city'][9]['area'] ) )#city的个数
    
  4. 一个省-市-区实例

    print(row_data[26]['name'])
    print(row_data[26]['city'][0]['name'])
    print(row_data[26]['city'][0]['area'][0])
    
  5. 查找陕西省的下标

    province=0;
    for d in row_data:
        if d['name']=='陕西省':
            print(province)
            print(row_data[province])
        province += 1
    
  6. 随机生成一个地区

    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)

举报

相关推荐

0 条评论