irpas技术客

python解析json字段的三种方式_H.S.T不想卷_python 解析json

网络投稿 3576

目录 1、运用re、json、jsonpath包解析json思路2、三种方式的json解析案例(1)运用re正则表达式解析json(2)运用字典的数据结构性质解析json(3)运用jsonpath的路径解析json 3、附录:re正则表达式语法

1、运用re、json、jsonpath包解析json思路

(1)re:正则表达式,通过json的形式对症下药,写表达式去解析json; (2)json: 通过json中的json.loads()方法,将str类型转为dict类型,运用python字典的数据结构特点去解析json; (3)jsonpath:对比与json包,jsonpath可以根据路径去解析json,比较适合用来解析json中带“[ ]”的数据。

2、三种方式的json解析案例 #json数据样式,本文采用带[]的数据样式 { "version": "version 1.0.12", "result": { "pages": 1314, "data": [ { "name": "大明", "IDcard": "440588190001015688", "address": "广东省广州市天河区正佳广场99楼520号", }, { "name": "二明", "IDcard": "440588190012317456", "address": "广东省广州市天河区天环广场88楼520号", } ] } } (1)运用re正则表达式解析json import re jsondata={ "version": "23231cimesfedkk", "result": { "pages": 1314, "data": [ { "name": "大明", "IDcard": "440588190001015688", "address": "广东省广州市天河区正佳广场99楼520号", }, { "name": "二明", "IDcard": "440588190012317456", "address": "广东省广州市天河区天环广场88楼520号", } ] } } if __name__ == '__main__': name_list=re.findall(r"'name': '(\w*)'",str(jsondata)) IDcard_list=re.findall(r"'IDcard': '(\w{18})'", str(jsondata))#身份证18位数字和字母组合 address_list=re.findall(r"'address': '(\w*)'", str(jsondata))#地址 print(name_list) print(IDcard_list) print(address_list)

运行结果:

['大明', '二明'] ['440588190001015688', '440588190012317456'] ['广东省广州市天河区正佳广场99楼520号', '广东省广州市天河区天环广场88楼520号'] (2)运用字典的数据结构性质解析json import json jsondata={"version": "23231cimesfedkk","result": {"pages": 1314,"data": [{"name": "大明","IDcard": "440588190001015688","address": "广东省广州市天河区正佳广场99楼520号",},{"name": "二明","IDcard": "440588190012317456","address": "广东省广州市天河区天环广场88楼520号",}]}} if __name__ == '__main__': # 若传入的数据为str类型需要将它转成dict类型 # result = json.loads(jsondata) jsondata = jsondata["result"]["data"] resultdata = jsondata namelist=[] idcardlist=[] addresslist=[] for data in resultdata: namelist.append(data['name']) idcardlist.append(data['IDcard']) addresslist.append(data['address']) print(namelist) print(idcardlist) print(addresslist)

运行结果:

['大明', '二明'] ['440588190001015688', '440588190012317456'] ['广东省广州市天河区正佳广场99楼520号', '广东省广州市天河区天环广场88楼520号'] (3)运用jsonpath的路径解析json import jsonpath jsondata={"version": "23231cimesfedkk","result": {"pages": 1314,"data": [{"name": "大明","IDcard": "440588190001015688","address": "广东省广州市天河区正佳广场99楼520号",},{"name": "二明","IDcard": "440588190012317456","address": "广东省广州市天河区天环广场88楼520号",}]}} if __name__ == '__main__': namelist=[] idcardlist=[] addresslist=[] #运用jsonpath.jsonpath(字典数据, 路径) namelist=jsonpath.jsonpath(jsondata, '$..name') idcardlist=jsonpath.jsonpath(jsondata, '$..IDcard') addresslist=jsonpath.jsonpath(jsondata, '$..address') print(namelist) print(idcardlist) print(addresslist)

运行结果:

['大明', '二明'] ['440588190001015688', '440588190012317456'] ['广东省广州市天河区正佳广场99楼520号', '广东省广州市天河区天环广场88楼520号'] 3、附录:re正则表达式语法


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python #解析json #的数据