大家好,我是Python进阶。前言前几天在菜哥的交流群里,一个叫[杭州-学生-飞飞飞]的粉丝在群里问了一个关于json文件处理的问题。好像他只需要follower和ddate这两个字段下对应的值。我们知道json是一种常见的数据传输形式,所以对于爬取数据的数据分析来说,json相关的操作是比较重要的,可以加快我们的数据提取效率。思路关于这个问题,其实并不难。该组提出了三种方法。第一个是蔡哥说的pd处理或者正则表达式,第二个是小编自己提出的json处理,第三个是【成都-IT技术支持-小王】小王提出的jsonpath有很多方法。这里有4种解决方案。希望粉丝下次遇到类似问题,有章可循。实现过程1.可以看看正则表达式的方法,通过匹配提取。代码如下:importreimportjsonfile=open('manga.txt','r',encoding='utf-8')content=file.readline()ddate_result1=re.findall('"ddate":"(\d+\-\d+\-\d+)"',content)ddate_result2=re.findall('"ddate":"(.*?)"',content)follower_result1=re.findall('"follower":(\d+),"',content)print(ddate_result1)print(ddate_result2)print(follower_result1)运行后可以得到结果:关于ddate,获取follower方法肯定还有很多其他的写法,这里只是扔掉,欢迎大家尝试2、jsonpath方法1关于jsonpath的使用,之前这篇文章中有提到,有兴趣的朋友也可以去看看:dataExtractedJSONandJsonPATH。以下是【成都-IT技术支持-小王】给出的代码:fromjsonpathimportjsonpathimportjson"""followerandddate"""withopen("Manga.txt",encoding="utf-8")asfile:file_json=json。loads(file.readline())follower=jsonpath(file_json,"$..follower")ddate=jsonpath(file_json,"$..ddate")print(follower)print(ddate)代码运行后会得到thedesired需要的数据如下图所示:这个..和xpath中的//是一样的,后代节点,$是根节点。3.jsonpath方法2这是另一种用法,小号【皮皮】提供,直接上传代码即可。importjsonimportjsonpath#obj=json.load(open('Luoxiang.json','r',encoding='utf-8'))#注意,这里是文件的形式,不能直接放一个文件名字符串file=open('manga.txt','r',encoding='utf-8')#注意,这里是文件的形式,不能直接放一串文件名obj=json.loads(file.readline())follower=jsonpath.jsonpath(obj,'$..follower')#file对象jsonpath语法ddate=jsonpath.jsonpath(obj,'$..ddate')#file对象jsonpath语法print(follower)print(ddate)coderun之后,也可以得到预期的结果。当然,如果你的文件本来就是一个json文件,你也可以直接读取。代码类似:importjsonimportjsonpathobj=json.load(open('Luoxiang.json','r',encoding='utf-8'))#注意这里是文件形式,不能直接放字符串文件名#file=open('Luoxiang.json','r',encoding='utf-8')#注意,这里是文件的形式,不能直接放一串文件名#obj=json.loads(file.readline())follower=jsonpath.jsonpath(obj,'$..follower')#文件对象jsonpath语法ddate=jsonpath.jsonpath(obj,'$..ddate')#文件对象jsonpath语法print(follower)print(ddate)运行后,也能得到预期的结果:4、jsonpath方法三这是群里[深圳-华哥]华博提供的,代码如下:importjsonimportjsonpathwithopen("罗翔.txt",'r',encoding="UTF-8")asfr:file_json=eval(fr.read().replace('\n\u200b',''))#读取的str转成字典follower=jsonpath.jsonpath(file_json,'$..follower')#fileobjectjsonpath语法ddate=jsonpath.jsonpath(file_json,'$..ddate')#fileobjectjsonpath语法print(follower)print(ddate)方法类似,运行后也可以得到预取的目标数据,如下图所示。总之,我是Python高级。本文根据粉丝对json文件处理的疑问和群友的回答,整理出4个可行方案,帮助粉丝解决问题。这里我向大家推荐jsonpath这个库。有兴趣的朋友可以学习学习,下次遇到json文件提取数据不要慌!【小编推荐】鸿蒙官方战略合作共建——HarmonyOS技术社区GitHubstars14K!程序员必备的开源备份工具终于来了!Windows11可以直接安装安卓应用,这里的傻瓜式教程受微信和支付宝支付码限制。都是因为这些人洗钱,洗的太多了。看看微软的“悲剧2021”就知道了!微软Windows11/Windows10Edge新功能“先买后付”遭用户诟病:让浏览器臃肿,立即停止
