python对于json文件的操作
断更好久了啊,最近真的好忙好忙,哈哈哈,不过只要稍有空闲博主还是会继续通过博客的形式记录当前的学习情况的。
最近由于公司自动化方面需要整理一下点测试数据并且还必须是json格式的,领导把处理这批测试数据的任务就交到了我这个新人手里了。大致原数据的样子呢,如下所示。
[{"FN":"周庸","ORG":["LZY","总经办"]},
{"FN":"冯楠","ORG":["LZY","总经办"]},
{"FN":"谢世传","ORG":["LZY","总经办"]},
{"FN":"吴权","ORG":["LZY","总经办","保密办"]},
{"FN":"严妹","ORG":["LZY","总经办","保密办"]},
{"FN":"张三","ORG":["LZY","总经办","综合办公室"]},
{"FN":"王二","ORG":["LZY","总经办","综合办公室"]}
]
领导的需求就是把这份文件一分为二,人员对应部门一份。部门对部门一份。并且都必须是json格式的,大致结果文件是这样的。
部门对应人员:
{"总经办": ["周庸","冯楠","谢世传"],"保密办": ["吴权","严妹"],"综合办公室": ["张三","王二"]
}部门对应部门:
{"LZY": ["总经办"],"总经办": ["保密办","综合办公室"]
}
哈哈哈。刚接到这任务的时候我想这有什么难的,最多一个小时就能搞定,但往往想的要比真正实现起来的要容易的多。大家到这里可以先不看博主下面的代码,自己先尝试着做做,有更好的办法欢迎留言。
起初大致的想法分为下面几个步骤。
部门对应人员:
1.先获取json文件里的数据。
2.因为文件格式为列表嵌套字典,键后面跟上列表。所以我们先要遍历列表将字典一个个的取出来。
3.将所有人员先取出来,再将左右的部门单独取出来。
4.再将部门与人员一层层循环嵌套到字典里面,形成json格式文件。
部门对应部门:
1.从上面博主给的例子中可以看出,部门全部都存放在列表中,我们先获取该列表
2.因为一个每个列表中部门数量不一样,我们只需要将末尾的部门和它的子部门组装成字典就行了,所以我们第二不就先获取每个列表的长度
3.好了直接还是回归以前的风格直接上代码吧,感觉越说越乱。哈哈哈哈
import jsonclass json1:def __init__(self,start):self.Dictionaries = {}self.Dictionaries1 = {}self.wenjian = startdef file(self): #读取原json 文件with open(self.wenjian, 'r', encoding='utf-8') as d:self.lines = json.load(d)return self.linesdef bianli(self,mulu):#部门人员文件for line in self.file(): keys = line['FN'] value= line['ORG'][-1] self.like = []if value not in self.Dictionaries: self.like.append(keys) self.Dictionaries[value] = self.like else:self.like = self.Dictionaries[value] if keys not in self.like: self.like.append(keys) self.Dictionaries[value] = self.like with open(mulu, 'w', encoding='utf-8') as f: json.dump(self.Dictionaries, f, ensure_ascii=False,indent=4)def bianli1(self,mulu):#部门对应部门文件for line in self.file():value = line['ORG'] leng = len(value) san = 0for name in range(san,leng): if name+1 < leng:if value[name] not in self.Dictionaries1:linet = []linet.append(value[name+1])self.Dictionaries1[value[name]] = linetelse:linet = self.Dictionaries1[value[name]]if value[name+1] not in linet:linet.append(value[name+1])self.Dictionaries1[value[name]] = linetprint(self.Dictionaries1)with open(mulu, 'w', encoding='utf-8') as f:json.dump(self.Dictionaries1, f, ensure_ascii=False,indent=4) #indent=4以json格式保存if __name__ == '__main__':s = json1('D:\\test1.json')s.bianli('D:\\test2.json')s.bianli1('D:\\test3.json')
应该不是太难懂吧,代码中有不懂的地方欢迎留言,有更好办法的小伙伴也欢迎留言谈论。
python对于json文件的操作相关推荐
- Python读取json文件及写入json文件等操作
Python读取json文件及写入json文件等操作 读取json文件 写入json文件 读取json文件 load():用于读取json文件 import json with open(path,' ...
- python处理json文件操作
目录 JSON文件基本介绍 JSON的规则 python读取json文件的方式 使用json文件的例子 注意问题 JSON文件基本介绍 JSON:一种与开发语言无关的.轻量级的数据存储格式,全称Jav ...
- python读取中文文件乱码-详解Python的json文件读取及中文乱码显示问题解决方法...
Python的json文件读取及解决中文乱码显示问题 本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: ...
- python读json文件中不同的数据类型_怎么使用python提取json文件中的字段
python中为什么用json有什么作用 python的json模块中如何将变量添加到里面 python的json模块第一个是要打开的文件,第二个是打开的操作,为什么会如果你早认清你在别人心中没那么重 ...
- python在json文件中查找指定数据_Python中json的取值 如何使用python提取json中指定字段的数据...
python中为什么用json有什么作用 如何用python读取json里面的值啊我爱你,所以我给了你伤害我的权力,只要我能忍受,我会一直陪伴着你,但你不能伤害我太多. 数据如下,我想要读取name. ...
- python和R文件IO操作对比及dataframe创建方式对比:read_csv、to_csv、write.csv、 data.frame、pd.DataFrame
python和R文件IO操作对比及dataframe创建方式对比 很多工程师可能刚开始的时候只熟悉python或者R其中的一个进行数据科学相关的任务. 那么如果我们对比这学习可以快速了解语言设计背后的 ...
- json 插入数据_让繁琐的工作自动化——python处理JSON文件
让繁琐的工作自动化--python处理JSON文件 不得不说,python真TMD香.由于python解析json过于简洁,我只好写个实例了,不然文章太短. 1.环境 python3.8 pychar ...
- PYTHON 处理JSON文件(新建key值Findex,并将歌手名字转换为大写首字母作为value值)
@PYTHON 处理JSON文件(新建key值Findex,并将歌手名字转换为大写首字母作为value值) 引入了第三方库 pypinyin 代码如下: import json import pypi ...
- python:json文件的保存与读取
介绍 json(JavaScript Object Notation, Java 脚本对象表示符)是一种特殊的数据格式,具有以下优点. (1)该数据格式独立于脚本语言(如c++,python,matl ...
最新文章
- 监督学习、非监督学习、强化学习都是什么?终于有人讲明白了
- php服务为什么开不了,php怎么打不开
- NET中解决KafKa多线程发送多主题的问题
- 学习SQL:将SQL Server导出到Excel
- CTFmisc常见音频隐写总结
- Learning Music Notation 学习音乐符号 Lynda课程中文字幕
- 连续分配、链接分配和索引分配详解
- Vue项目 在chrome页面崩溃:喔唷 崩溃了(总结)
- dub的sdl配置文件中文帮助
- LDC注册数据获取|ACE2004, ACE 2005,OntoNotes等数据
- Java基础:常用类(String类)
- 搜索计算机文件夹的记录怎么删除,Win7如何删除“我的电脑”搜索栏里面的搜索记录...
- 我的身体为什以会这样?如何诊治?
- ORACLE按照拼音,部首,笔画排序
- iOS 15 UITableView Section间距变大
- #![feature]` may not be used on the stable release channel 问题解决及设置Rust Channel的三种方式
- cv::mat与unsigned char*相互转化之间的转换
- 初识docker《部署docker容器虚拟化平台》
- 深入浅出CChart 每日一课——快乐高四第五十八课 大道至简,炫彩界面库之接口代码优化
- 大数据开发个人学习规划