国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

2021-08-10 00:07Python大數(shù)據(jù)分析費(fèi)弗里 Python

在上一期文章中我們一起學(xué)習(xí)了在Python中如何使用jsonpath庫(kù),對(duì)JSON格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行常規(guī)的節(jié)點(diǎn)條件查詢,可以滿足日常許多的數(shù)據(jù)處理需求。

簡(jiǎn)介

在上一期文章中我們一起學(xué)習(xí)了在Python中如何使用jsonpath庫(kù),對(duì)JSON格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行常規(guī)的節(jié)點(diǎn)條件查詢,可以滿足日常許多的數(shù)據(jù)處理需求。

Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

而在上一期結(jié)尾處,我提到了還有其他JSONPath功能相關(guān)的進(jìn)階Python庫(kù),在今天的文章中,我就將帶大家學(xué)習(xí)更加高級(jí)的JSON數(shù)據(jù)處理方式。

Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

基于jsonpath-ng的進(jìn)階JSON數(shù)據(jù)處理方法

jsonpath-ng是一個(gè)功能強(qiáng)大的Python庫(kù),它整合了jsonpath-rw、jsonpath-rw-ext等第三方JSONPath拓展庫(kù)的實(shí)用功能,使得我們可以基于JSONPath語(yǔ)法,實(shí)現(xiàn)更多操縱JSON數(shù)據(jù)的功能,而不只是查詢數(shù)據(jù)而已,使用pip install jsonpath-ng進(jìn)行安裝:

2.1 JSON數(shù)據(jù)的增刪改

jsonpath-ng中設(shè)計(jì)了一些方法,可以幫助我們實(shí)現(xiàn)對(duì)現(xiàn)有JSON數(shù)據(jù)的增刪改操作,首先我們來(lái)學(xué)習(xí)jsonpath-ng中如何定義JSONPath模式,并將其運(yùn)用到對(duì)數(shù)據(jù)的匹配上,依然以上篇文章的數(shù)據(jù)為例:

  1. import json 
  2. from jsonpath_ng import parse 
  3.  
  4. # 讀入示例json數(shù)據(jù) 
  5. with open('json示例.json', encoding='utf-8'as j: 
  6.     demo_json = json.loads(j.read()) 
  7.      
  8. # 構(gòu)造指定JSONPath模式對(duì)應(yīng)的解析器 
  9. parser = parse('$..paths..steps[*].duration'
  10.  
  11. # 利用解析器的find方法找到目標(biāo)數(shù)據(jù)中所有滿足條件的節(jié)點(diǎn) 
  12. matches = parser.find(demo_json) 
  13.  
  14. # 利用value屬性取得對(duì)應(yīng)匹配結(jié)果的值 
  15. matches[0].value 

Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

而基于上面產(chǎn)生的一些對(duì)象我們就可以實(shí)現(xiàn)對(duì)JSON數(shù)據(jù)的增刪改:

2.1.1 對(duì)JSON數(shù)據(jù)進(jìn)行增操作

在jsonpath-ng中對(duì)JSON數(shù)據(jù)添加節(jié)點(diǎn),思想是先構(gòu)造對(duì)「原先不存在」的節(jié)點(diǎn)進(jìn)行匹配的解析器對(duì)象,利用find_or_create方法處理原始JSON數(shù)據(jù):

  1. # 構(gòu)造示例數(shù)據(jù) 
  2. demo_json = { 
  3.     'level1': [ 
  4.         { 
  5.             'level2': {} 
  6.         }, 
  7.         { 
  8.             'level2': { 
  9.                 'level3': 12 
  10.             } 
  11.         } 
  12.     ] 
  13.  
  14. # 構(gòu)造規(guī)則解釋器,所有除去最后一層節(jié)點(diǎn)規(guī)則外可以匹配到的節(jié)點(diǎn) 
  15. # 都屬于合法匹配結(jié)果,會(huì)在匹配結(jié)果列表中出現(xiàn) 
  16. parser = parse('level1[*].level2.level3'
  17.  
  18. matches = parser.find_or_create(demo_json) 
  19.  
  20. demo_json 

在find_or_create操作之后,demo_json就被修改成下面的結(jié)果:

Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

接下來(lái)的事情就很簡(jiǎn)單了,只需要在matches結(jié)果中進(jìn)行遍歷,遇到value屬性為{}的,就運(yùn)用full_path.update_or_create()方法對(duì)原始JSON數(shù)據(jù)進(jìn)行更新即可,比如這里我們填充999:

  1. for match in matches: 
  2.     if match.value == {}: 
  3.         # 更新原始輸入的JSON數(shù)據(jù) 
  4.         match.full_path.update_or_create(demo_json, 999) 
  5.  
  6. demo_json 

 Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

2.1.2 對(duì)JSON數(shù)據(jù)進(jìn)行刪操作

當(dāng)我們希望對(duì)JSON數(shù)據(jù)中指定JSONPath規(guī)則的節(jié)點(diǎn)予以刪除時(shí),可以使用到parse對(duì)象的filter()方法傳入lambda函數(shù),在lambda函數(shù)中進(jìn)行條件判斷,返回的即為刪除指定節(jié)點(diǎn)之后的輸入數(shù)據(jù)。

以上一步「增」操作后得到的demo_json為例,我們來(lái)對(duì)其level1[*].level2.level3值為999的予以過(guò)濾:

  1. parser = parse('level1[*].level2.level3'
  2.  
  3. # 過(guò)濾 level1[*].level2.level3 規(guī)則下值為 999 的節(jié)點(diǎn) 
  4. parser.filter(lambda x: x == 999, demo_json) 
  5. demo_json 

可以看到結(jié)果正是我們所預(yù)期的:

Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

2.1.3 對(duì)JSON數(shù)據(jù)進(jìn)行改操作

對(duì)JSON數(shù)據(jù)中的指定節(jié)點(diǎn)進(jìn)行改操作非常的簡(jiǎn)單,只需要使用parse對(duì)象的update或update_or_create方法即可,使用效果的區(qū)別如下所示,輕輕松松就可以完成兩種策略下的節(jié)點(diǎn)更新操作:

Python中JSON結(jié)構(gòu)數(shù)據(jù)的高效增刪改操作

jsonpath-ng中還有一些豐富的功能,這里就不再贅述,感興趣的讀者朋友可以前往https://github.com/h2non/jsonpath-ng查看。

【編輯推薦】https://mp.weixin.qq.com/s?__biz=MzA3ODYwNDkzOQ==&mid=2659066521&idx=1&sn=9b9e75d943dfcff2b230a0c80fd315cc&chksm=84cabd7db3bd346b0f1a9a2c1de92e9a9e050cba14184ec716bad39c5c9f8f6b225514e1cc60&mpshare=1&

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩欧美一区二区视频 | 欧美综合成人网 | 亚洲精品在线免费看 | 开心久久婷婷综合中文字幕 | 国产黄色免费网站 | 亚洲欧美视频在线播放 | 久久成人国产精品 | 久久精品一区二区三区四区 | 久久久91| 成人激情视频免费在线观看 | 日本a在线 | 精品成人在线 | 精品国产子伦久久久久久小说 | 欧美精品亚洲精品日韩精品 | 国产精品18久久久 | 成人婷婷网色偷偷亚洲男人的天堂 | 久久久www成人免费无遮挡大片 | 视频一区在线播放 | 日韩av一区二区在线观看 | av软件在线| 在线观看视频黄 | 中文字幕日韩欧美 | 久久综合成人精品亚洲另类欧美 | 亚洲精品成人 | 久久综合久久久 | 国产片在线观看 | 久久精品一 | 荷兰欧美一级毛片 | 久久se精品一区精品二区 | 久久精品国产亚卅av嘿嘿 | 午夜激情视频在线观看 | 亚洲欧美日韩精品久久奇米色影视 | 久久久久久久久久久精 | 羞羞网站免费观看 | 成人午夜在线 | 男插女青青影院 | 精品一区二区在线观看 | 日韩免费观看视频 | 羞羞小视频 | 亚洲精品一区 | 国产乱码一区二区三区在线观看 |