场景如下:

格式为 json 的文件中存在多行测试数据,需要判断文件中 “esbsn” 字段的值是否存在重复数据

{"time":"2022-08-09 10:00:31:947","esbsn":"000000175059","status":"S"}
{"time":"2022-08-09 10:01:46:466","esbsn":"000000175060","status":"S"}
{"time":"2022-08-09 09:59:07:089","esbsn":"000000175058","status":"S"}
{"time":"2022-08-09 10:03:31:887","esbsn":"000000175061","status":"S"}
{"time":"2022-08-09 10:01:46:466","esbsn":"000000175060","status":"S"}
{"time":"2022-08-09 09:15:57:134","esbsn":"000000175037","status":"S"}
{"time":"2022-08-09 09:13:54:331","esbsn":"000000175036","status":"S"}
{"time":"2022-08-09 10:01:46:466","esbsn":"000000175060","status":"S"}

数据较少时可以通过肉眼观察较快得出结论,假如数据较多时,想通过肉眼观察得出结论将花费大量的时间且结果的正确性也难以保证,由此引入 python 脚本的方法去对 json 文件进行解析并针对特定字段进行字段值查重。

设计思路:
1、先逐行读取json文件,将每行读取的字符串解析为python字典

with open(file_path, 'r', encoding="utf-8") as f:#   逐行读取文件内容for line in f.readlines():#  将每行读取的内容解析为字典json_data = json.loads(line)print(json_data)

结果显示:

{"time":"2022-08-09 10:00:31:947","esbsn":"000000175059","status":"S"}
{"time":"2022-08-09 10:01:46:466","esbsn":"000000175060","status":"S"}
{"time":"2022-08-09 09:59:07:089","esbsn":"000000175058","status":"S"}
{"time":"2022-08-09 10:03:31:887","esbsn":"000000175061","status":"S"}
{"time":"2022-08-09 10:01:46:466","esbsn":"000000175060","status":"S"}
{"time":"2022-08-09 09:15:57:134","esbsn":"000000175037","status":"S"}
{"time":"2022-08-09 09:13:54:331","esbsn":"000000175036","status":"S"}
{"time":"2022-08-09 10:01:46:466","esbsn":"000000175060","status":"S"}

这样我们就可以得到json文件内数据内容了,方便后续我们对这些数据内容进行处理。

2、取出字典中要判重字段的值,并将值添加到列表中方便后面判重

dict1={'time': '2022-08-09 10:00:31:947', 'esbsn': '000000175059',, 'status': 'S'}
dict2={'time': '2022-08-09 10:01:46:466', 'esbsn': '000000175060', 'status': 'S'}
dict3={'time': '2022-08-09 09:59:07:089', 'esbsn': '000000175059', 'status': 'S'}
#  先构建一个空列表
a = []
#  再将每个字典中trace_id的值取出放在列表内
a.append(dict1["trace_id"])
a.append(dict2["trace_id"])
a.append(dict3["trace_id"])
print(a)

结果显示:

['000000175059', '000000175060', '000000175059']

把要判重的数据值添加到字典内,方便后续对字典内的元素进行判重。

3、得到判重字段值的列表数据后,可以使用Count函数跟踪字段值出现的次数

a = ['000000175059', '000000175060', '000000175059']
#  跟踪列表 a 中字段值出现的次数,并转化为字典形式,如{字段值:次数}
b = dict(Counter(a))
print(b)
#  只展示重复元素(出现次数大于1的元素)
print([key for key, value in b.items() if value > 1])
#  展现重复元素和重复次数
print({key: value for key, value in b.items() if value > 1})

结果显示:

{'000000175059': 2, '000000175060': 1}
['000000175059']
{'000000175059': 2}

这样就可以看出字典内每个元素出现的次数了,元素次数大于1的就是重复数据拉。

4、完整代码如下:

import json
import os
from collections import Counter  # 引入Counter#  获取要解析Json文件的绝对路径
file_path = os.path.abspath("../conf/test.json")class read_Json():def __init__(self , param):#  设置需要判重的字段self.param = paramdef read_json(self):#  开始json文件with open(file_path, 'r' ,encoding="utf-8") as f:#  先构建一个空的列表,方便后续导入要判重的字段a = []#  逐行读取文件内容for line in f.readlines():#  将每行读取的内容解析为字典json_data = json.loads(line)#  取出字典数据中需要判重的数据值x = json_data[self.param]#  将需要判重的值添加值原来构建的列表 a 中a.append(x)#  跟踪列表 a 中字段值出现的次数,并转化为字典形式,如{字段值:次数}b = dict(Counter(a))#  只展示重复元素(出现次数大于1的元素)print([key for key, value in b.items() if value > 1])#  展现重复元素和重复次数print({key: value for key, value in b.items() if value > 1})#  测试验证
if __name__ == "__main__":print(read_Json("esbsn").read_json())

使用 Python 读取 json 格式文件并查重相关推荐

  1. python读取json格式文件大量数据,以及python字典和列表嵌套用法详解

    1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...

  2. python获取的html转换为json,python读取XML格式文件并转为json格式

    XML文件如下: 红楼梦书名> 曹雪芹作者> 描述贾宝玉和林黛玉的爱情故事主要内容> 人民文学出版社出版社> 图书> 一.python读取XML格式文件代码: impor ...

  3. python读取json格式的超参数

    python读取json格式的超参数 json文件: {"full_finetuning": true,"max_len": 180,"learnin ...

  4. python用os.system打开wav文件_使用python读取wav格式文件

    ** 使用python读取wav格式文件 ** - 基本概念 [采样频率] 即取样频率, 指每秒钟取得声音样本的次数.采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多.由 ...

  5. python读取各种格式文件方式

    python读取各种格式文件方式 1.读取图片并显示 #方法1 from PIL import Image img=Image.open('1.jpg') img.show() #方法2 import ...

  6. python读取特殊格式文件

    python读取特殊格式文件 1.pytorch读取lmdb格式文件 参考文献 做深度学习/数据分析,数据读取是基础.必需的一环.特整理,以待后用. 1.pytorch读取lmdb格式文件 内容来源于 ...

  7. Python——读取raw格式文件

    Python--读取raw格式文件 文章目录 Python--读取raw格式文件 前言 一.直接上代码 前言 简单记录一下python读取raw格式图像,因为reshape来来回回还交换轴搞得人头大, ...

  8. 【自动化测试】Python 读取 .ini 格式文件

    大家应该接触过.ini格式的配置文件.配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码.特别是后续做自动化的测试,需要拎出一部分配置信息,进行管理.比如 ...

  9. python ini文件 遍历_【自动化测试】Python 读取 .ini 格式文件

    大家应该接触过.ini格式的配置文件.配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码.特别是后续做自动化的测试,需要拎出一部分配置信息,进行管理.比如 ...

最新文章

  1. js / jquery 零散收集
  2. Android Studio 快捷键
  3. 求高精度幂(java)
  4. webpack 与 热编译webpack-dev-server
  5. PHP - PDO 之 mysql 参数绑定
  6. python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法
  7. Redis命令 - sortedSet
  8. chrome浏览器离线安装包下载地址
  9. cad,max,revit,Civil ,InventorNavisworks 卸载清理工具
  10. 技术人的未来(一)——跳槽
  11. 身为码农,为12306说两句公道话
  12. 微信号可以一年内第二次修改技巧吗?
  13. HTML5 基础教程
  14. STM32---PB3和PB4引脚
  15. 别忽略国美之争的真正遗产
  16. AudioEffect与Equalizer解析(Java侧)
  17. ReactNative工程自定义脚本
  18. 分享创意个性古风剪影喜迎国庆PPT模板
  19. HYSBZ 2251 外星联络
  20. 米酷CMS影视 6.26 源码+解析接口+安装步骤

热门文章

  1. CentOS Docker使用ELK监听日志
  2. 2023年提高Google关键词排名的方法,如何提高谷歌排名?
  3. 2020年数据科学与大数据技术专业填报指南(附院校及专业介绍)/ 高考填志愿...
  4. 国产CPU的6大品牌,3大路线对比
  5. 数据处理案例一之求同存异
  6. 全卷积网络FCN与卷积神经网络CNN的区别
  7. 数据结构考研:电脑磁盘碎片的定义、产生原理和清理原因(文件碎片/机械硬盘/固态硬盘/硬盘清理/计算机/软件工程/王道论坛)
  8. 九龙证券|游戏板块或继续迎来业绩估值“戴维斯双击”
  9. Kali网络渗透测试二——网络嗅探与身份认证
  10. 如何在网页端登录企业邮箱修改密码?