国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

jsonpath庫中的常規功能介紹

Linux愛好者 ? 來源:Python大數據分析 ? 作者: 費弗里 ? 2021-09-01 14:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 簡介

在日常使用Python的過程中,我們經常會與json格式的數據打交道,尤其是那種嵌套結構復雜的json數據,從中抽取復雜結構下鍵值對數據的過程枯燥且費事。

而熟悉xpath的朋友都知道,對于xml格式類型的具有層次結構的數據,我們可以通過編寫xpath語句來靈活地提取出滿足某些結構規則的數據。

類似的,JSONPath也是用于從json數據中按照層次規則抽取數據的一種實用工具,在Python中我們可以使用jsonpath這個庫來實現JSONPath的功能。

2 在Python中使用JSONPath提取json數據jsonpath是一個第三方庫,所以我們首先需要通過pip install jsonpath對其進行安裝。

2.1 一個簡單的例子安裝完成后,我們首先來看一個簡單的例子,從而初探其使用方式:

這里使用到的示例json數據來自高德地圖步行導航接口,包含了從天安門廣場到西單大悅城的步行導航結果,原始數據如下,層次結構較深:

f2beeac2-0ad0-11ec-911a-12bb97331649.png

假如我想要獲取其嵌套結構中steps鍵值對下每段行程的耗時duration數據,配合jsonpath就可以這樣做:

import json

from jsonpath import jsonpath

# 讀入示例json數據with open(‘json示例.json’, encoding=‘utf-8’) as j:

demo_json = json.loads(j.read())

# 配合JSONPath表達式提取數據

jsonpath(demo_json, ‘$..steps[*].duration’)

f2cab01e-0ad0-11ec-911a-12bb97331649.png

其中$..steps[*].duration就是我們用于描述數據位置規則的JSONPath語句,配合jsonpath()便可以提取出對應信息,下面我們就來學習jsonpath中支持的常用JSONPath語法:

2.2 jsonpath中的常用JSONPath語法為了滿足日常提取數據的需求,JSONPath中設計了一系列語法規則來實現對目標值的定位,其中常用的有:

「按位置選擇節點」

在jsonpath中主要有以下幾種按位置選擇節點的方式:

功能語法

根節點$

當前節點@

子節點。或[]

任意子節點*

任意后代節點。。

讓我們來演示一下它們的一些用法:

# 提取所有duration鍵對應值

jsonpath(demo_json, ‘$..duration’)

f2eb80dc-0ad0-11ec-911a-12bb97331649.png

# 提取所有steps鍵的子節點對應instruction值

jsonpath(demo_json, ‘$..steps.*.instruction’)

f2f7c37e-0ad0-11ec-911a-12bb97331649.png

索引子節點」

有些時候我們需要在選擇過程中對子節點做多選或按位置選擇操作,就可以使用到jsonpath中的相關功能:

# 多選所有steps鍵的子節點對應的instruction與action值

jsonpath(demo_json, ‘$..steps.*[instruction,action]’)

f323adb8-0ad0-11ec-911a-12bb97331649.png

# 選擇steps鍵的第0個子節點對應的instruction與action值

jsonpath(demo_json, ‘$..steps[0][instruction,action]’)

# 選擇steps鍵的第1到3(不包括3)個子節點對應的instruction與action值

jsonpath(demo_json, ‘$..steps[1:3][instruction,action]’)

# 配合@,選擇steps鍵的最后一個子節點對應的instruction與action值

jsonpath(demo_json, ‘$..steps[(@.length-1)][instruction,action]’)

f3322294-0ad0-11ec-911a-12bb97331649.png

「條件篩選」

有些時候我們需要根據子節點的某些鍵值對值,對選擇的節點進行篩選,在jsonpath中支持常用的==、!=、》、《等比較運算符,以==比較符為例,這里配合@定位符從當前節點提取子節點,語法為?(@.鍵名 比較符 值):

# 找到所有steps子節點中orientation為“西”的

jsonpath(demo_json, ‘$..steps[?(@.orientation == “西”)]’)

f340b5e8-0ad0-11ec-911a-12bb97331649.png

而如果想要提取所有具有指定鍵的節點,可以參考下面的例子:

# 找到所有具有polyline鍵的節點對應的polyline與road鍵對應值

jsonpath(demo_json, ‘$.。[?(@.polyline)][polyline,road]’)

f3559148-0ad0-11ec-911a-12bb97331649.png

2.3 返回結果的形式在前面的例子中,我們所有的返回結果直接就是提取到的滿足條件的結果,而jsonpath()中還提供了另一種特殊的結果返回形式,只需要設置參數result_type=None就可以改直接返回結果為返回每個結果的JSONPath表達式:

# 獲取結果的JSONPath表達式

jsonpath(demo_json, ‘$.。[?(@.polyline)][polyline,road]’, result_type=None)

f3c909b6-0ad0-11ec-911a-12bb97331649.png

以上介紹的均為jsonpath庫中的常規功能,可以滿足基礎的json數據提取需求,而除了jsonpath之外,還有其他具有更加豐富拓展功能的JSONPath類的第三方庫,可以幫助我們實現很多進階靈活的操作。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7335

    瀏覽量

    94759
  • XML
    XML
    +關注

    關注

    0

    文章

    188

    瀏覽量

    34533
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90025
  • JSON
    +關注

    關注

    0

    文章

    128

    瀏覽量

    7781

原文標題:在 Python 中操縱 json 數據的最佳方式

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    AirCloud平臺+excloud擴展:核心功能實戰應用!

    AirCloud平臺的配置靈活性與excloud擴展功能擴展性,通過實戰應用得以充分體現。下面整理核心功能實戰示例集,覆蓋常見業務需求場景:如通過平臺配置快速搭建高可用架構,借助excloud
    的頭像 發表于 12-24 17:17 ?604次閱讀
    AirCloud平臺+excloud擴展<b class='flag-5'>庫</b>:核心<b class='flag-5'>功能</b>實戰應用!

    與標準C的區別

    系統,但不支持在像Windosw這類系統。 MicroLib是缺省c的備選,它可裝入少量內存,與嵌入式應用程序配合使用,且這些
    發表于 12-09 07:49

    LuatOS MCU核心全接觸:新手操作與功能測試攻略!

    ?MCU芯片級開發新手如何快速掌握核心技能?本文圍繞LuatOS的MCU核心,系統演示時鐘頻率獲取、唯一ID讀取、高精度計時、IO復用配置等核心功能測試,并通過豐富示例,幫助開發者輕松入門,迅速
    的頭像 發表于 11-12 14:30 ?295次閱讀
    LuatOS MCU核心<b class='flag-5'>庫</b>全接觸:新手操作與<b class='flag-5'>功能</b>測試攻略!

    新手必備:LuatOS MCU核心功能測試與實踐指南

    新手如何快速掌握MCU芯片級開發?本文通過LuatOS的MCU核心,全面演示時鐘頻率獲取、唯一ID讀取、高精度計時、IO復用配置等核心功能的測試流程,并提供實用示例,幫助開發者高效入門,輕松應對
    的頭像 發表于 11-12 14:26 ?339次閱讀
    新手必備:LuatOS MCU核心<b class='flag-5'>庫</b><b class='flag-5'>功能</b>測試與實踐指南

    NMSIS神經網絡使用介紹

    NMSIS NN 軟件是一組高效的神經網絡內核,旨在最大限度地提高 Nuclei N 處理器內核上的神經網絡的性能并最??大限度地減少其內存占用。 該分為多個功能,每個功能涵蓋特定
    發表于 10-29 06:08

    物聯網短信實戰:SMS收發功能速成來啦!

    在物聯網開發,短信收發是常見需求。本文帶來一場技術實戰,借助SMS,10分鐘內即可實現物聯網短信的收發。通過簡單易懂的教程,讓你快速掌握這項功能,為物聯網項目賦能。 ? SMS核心
    的頭像 發表于 10-21 17:09 ?839次閱讀
    物聯網短信實戰:SMS<b class='flag-5'>庫</b>收發<b class='flag-5'>功能</b>速成來啦!

    常規網線最低能耐多少溫度

    常規網線的最低耐受溫度通常為-20℃,部分特殊類型網線可低至-40℃或-70℃。以下是具體分析: 一、常規網線的最低耐受溫度 超五類網線:這是家庭和辦公環境中常用的網線類型。其運行溫度標準通常在
    的頭像 發表于 09-29 09:42 ?1403次閱讀

    CANoeADAS功能介紹

    高級駕駛輔助系統(ADAS)在汽車的應用日益增長,為了滿足工程師對于ADAS的分析、仿真和測試等功能的需求,CANoe從15.0版本開始提供ADASFeatureSet(ADAS功能集,簡稱AFS
    的頭像 發表于 07-10 14:55 ?1303次閱讀
    CANoe<b class='flag-5'>中</b>ADAS<b class='flag-5'>功能</b>集<b class='flag-5'>介紹</b>

    1.3 EMC是常規設計準則的例外情況

    1.3EMC是常規設計準則的例外情況產品的電路原理是用電路圖來描述的,但是電路圖是僅僅著眼于按原定目的傳輸信易帶前把電路抽象化的模型。從EMC產生的原理分析,可以說功能電路圖兒乎所的現免
    的頭像 發表于 07-07 17:09 ?747次閱讀
    1.3 EMC是<b class='flag-5'>常規</b>設計準則的例外情況

    如何在Unified IDE創建視覺HLS組件

    Vivado IP 流程(Vitis Unified),在這篇 AMD Vitis HLS 系列 3 ,我們將介紹如何使用 Unified IDE 創建 HLS 組件。這里采用“自下而上”的流程,從 HLS
    的頭像 發表于 07-02 10:55 ?1440次閱讀
    如何在Unified IDE<b class='flag-5'>中</b>創建視覺<b class='flag-5'>庫</b>HLS組件

    AD封裝安裝教程

    電子發燒友網站提供《AD封裝安裝教程.pdf》資料免費下載
    發表于 06-19 15:35 ?3次下載

    快速入門——LuatOS:sys多任務管理實戰攻略!

    的開發者,這里將用最簡明的步驟,助你輕松實現多任務應用開發! sys是LuatOS的核心系統調度,它基于Lua協程機制實現了實時多任務調度、定時器管理以及消息通信等功能。 在詳細介紹
    的頭像 發表于 05-29 14:36 ?820次閱讀
    快速入門——LuatOS:sys<b class='flag-5'>庫</b>多任務管理實戰攻略!

    基于STM32 HAL與標準的esp8266接入機智云方案(二)

    在《基于STM32HAL與標準的esp8266接入機智云方案(一)》,我們詳細介紹了硬件連接和機智云客戶端的創建。本篇將重點講解如何下載代碼、分析下載的代碼,并直接使用這些代碼連
    的頭像 發表于 05-28 18:02 ?1402次閱讀
    基于STM32 HAL<b class='flag-5'>庫</b>與標準<b class='flag-5'>庫</b>的esp8266接入機智云方案(二)

    MySQL數據采集網關是什么?有什么功能

    MySQL數據采集網關是一種用于連接、采集、處理并傳輸數據到MySQL數據的中間設備或軟件系統,通常部署在數據源與MySQL數據之間,作為數據交互的橋梁。它在工業物聯網、智能樓宇、能源管理等
    的頭像 發表于 05-26 15:20 ?661次閱讀

    在IEEE802.1CB(FRER)CB_EN(DPI) 或FRMREPEN(常規參數表)配置哪一個?

    配置 FRMREPEN 不出現在該表的常規參數表CB_EN我是否需要啟用 CB_EN?? 我是否需要啟用 Deep Inspection Table 是否CB_EN我是否需要啟用此功能? 我找不到 FRMREPEN 那么我該如
    發表于 03-20 07:55