欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的JMESPath庫示例詳解

 更新時(shí)間:2023年09月14日 10:32:35   作者:naer_chongya  
這篇文章主要介紹了Python中的JMESPath庫示例詳解,JMESPath的基本思想是使用類似于XPath的路徑表達(dá)式來指定要從JSON結(jié)構(gòu)中提取哪些數(shù)據(jù),它允許您以一致的方式導(dǎo)航和過濾JSON對象和數(shù)組,需要的朋友可以參考下

JMESPath

JMESPath是一個(gè)用于處理和查詢JSON數(shù)據(jù)的查詢語法庫。它允許您以簡單、一致和強(qiáng)大的方式從復(fù)雜的JSON結(jié)構(gòu)中提取數(shù)據(jù)。在本文中,我將為您提供一個(gè)詳細(xì)的JMESPath示例,以便您了解如何使用它。

首先,我將簡要介紹JMESPath的基本思想和一些常用的查詢操作符,然后我將通過一個(gè)具體的示例來說明如何使用JMESPath進(jìn)行JSON查詢。

JMESPath基本思想: JMESPath的基本思想是使用類似于XPath的路徑表達(dá)式來指定要從JSON結(jié)構(gòu)中提取哪些數(shù)據(jù)。它允許您以一致的方式導(dǎo)航和過濾JSON對象和數(shù)組。

JMESPath支持以下幾種操作符:

  1. 點(diǎn)操作符(.): 用于訪問JSON對象中的屬性或數(shù)組中的元素。
  2. 方括號操作符([]): 用于訪問JSON數(shù)組中的元素,可以使用索引、迭代和過濾數(shù)組。
  3. 通配符(*)和多級通配符(**): 用于匹配任意層級的屬性或數(shù)組元素。
  4. 過濾器(?): 用于根據(jù)條件過濾數(shù)組元素。
  5. 比較操作符: 支持等于(==)、不等于(!=)、小于(<)、小于等于(<=)、大于(>)和大于等于(>=)等比較操作符。
  6. 邏輯操作符: 支持與(and)、或(or)和非(not)等邏輯操作符。

現(xiàn)在,讓我們通過一個(gè)具體示例來說明如何使用JMESPath進(jìn)行JSON查詢。

示例: 假設(shè)我們有以下JSON數(shù)據(jù):

{
  "students": [
    {
      "name": "Alice",
      "age": 18,
      "grades": {
        "math": 90,
        "english": 85,
        "science": 92
      }
    },
    {
      "name": "Bob",
      "age": 20,
      "grades": {
        "math": 75,
        "english": 88,
        "science": 80
      }
    },
    {
      "name": "Charlie",
      "age": 19,
      "grades": {
        "math": 85,
        "english": 92,
        "science": 78
      }
    }
  ]
}

我們將使用JMESPath來執(zhí)行以下查詢操作:

1.提取所有學(xué)生的名字和年齡:

students[].{ "name": name, "age": age }

這個(gè)查詢將返回一個(gè)包含所有學(xué)生名字和年齡的列表:

[
  {
    "name": "Alice",
    "age": 18
  },
  {
    "name": "Bob",
    "age": 20
  },
  {
    "name": "Charlie",
    "age": 19
  }
]

2.提取所有學(xué)生的姓名、科目和對應(yīng)的分?jǐn)?shù):

students[].{ "name": name, "grades": grades }

這個(gè)查詢將返回一個(gè)包含所有學(xué)生姓名、科目和對應(yīng)分?jǐn)?shù)的列表:

[
  {
    "name": "Alice",
    "grades": {
      "math": 90,
      "english": 85,
      "science": 92
    }
  },
  {
    "name": "Bob",
    "grades": {
      "math": 75,
      "english": 88,
      "science": 80
    }
  },
  {
    "name": "Charlie",
    "grades": {
      "math": 85,
      "english": 92,
      "science": 78
    }
  }
]

3.提取分?jǐn)?shù)大于90分的學(xué)生姓名:

students[?grades.math > `90`].name

這個(gè)查詢將返回一個(gè)包含分?jǐn)?shù)大于90分的學(xué)生姓名的列表:

[
  "Alice"
]

以上只是一些基礎(chǔ)的JMESPath查詢示例,JMESPath還支持更復(fù)雜的查詢操作。您可以使用JMESPath來過濾、排序、組合和轉(zhuǎn)換JSON數(shù)據(jù)。以下是一些其他常見的JMESPath查詢示例:

4.提取所有學(xué)生的平均分?jǐn)?shù):

students[].{ 
  "name": name, 
  "average_grade": (grades.math + grades.english + grades.science) / 3 
}

這個(gè)查詢將返回一個(gè)包含所有學(xué)生姓名和平均分?jǐn)?shù)的列表:

[
  {
    "name": "Alice",
    "average_grade": 89
  },
  {
    "name": "Bob",
    "average_grade": 81
  },
  {
    "name": "Charlie",
    "average_grade": 85
  }
]

5.提取平均分?jǐn)?shù)最高的學(xué)生姓名:

students[].{ 
  "name": name, 
  "average_grade": (grades.math + grades.english + grades.science) / 3 
} | max_by(@, &average_grade).name

這個(gè)查詢將返回平均分?jǐn)?shù)最高的學(xué)生姓名:

"Alice"

6.提取每個(gè)科目的最高分?jǐn)?shù):

{
  "math": max(students[].grades.math),
  "english": max(students[].grades.english),
  "science": max(students[].grades.science)
}

這個(gè)查詢將返回每個(gè)科目的最高分?jǐn)?shù):

{
  "math": 90,
  "english": 92,
  "science": 92
}

7.提取年齡在18到20之間的學(xué)生姓名:

students[age >= `18` && age <= `20`].name

這個(gè)查詢將返回年齡在18到20之間的學(xué)生姓名:

[
  "Alice",
  "Bob",
  "Charlie"
]

這些示例演示了JMESPath的一些常見用法,您可以使用更復(fù)雜的查詢來滿足您的需求。JMESPath還有更多功能,如嵌套查詢、支持正則表達(dá)式、對查詢結(jié)果進(jìn)行轉(zhuǎn)換等,您可以參考官方文檔以獲取更詳細(xì)的信息。

希望這些示例能夠幫助您理解JMESPath的基本概念和用法,以便您能夠在Python中輕松使用它進(jìn)行JSON查詢。

到此這篇關(guān)于Python中的JMESPath庫示例詳解的文章就介紹到這了,更多相關(guān)Python的JMESPath庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)SICP賦值和局部狀態(tài)

    Python實(shí)現(xiàn)SICP賦值和局部狀態(tài)

    這篇文章主要介紹了Python實(shí)現(xiàn)SICP 賦值和局部狀態(tài)的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Python應(yīng)用之bin文件的制作

    Python應(yīng)用之bin文件的制作

    bin是二進(jìn)制文件,其用途依系統(tǒng)或應(yīng)用而定。一種文件格式binary的縮寫。這篇文章主要為大家介紹了Python如何實(shí)現(xiàn)bin文件的制作,需要的可以參考一下
    2023-01-01
  • Python異步與定時(shí)任務(wù)提高程序并發(fā)性和定時(shí)執(zhí)行效率

    Python異步與定時(shí)任務(wù)提高程序并發(fā)性和定時(shí)執(zhí)行效率

    Python異步與定時(shí)任務(wù)是Python編程中常用的兩種技術(shù),異步任務(wù)可用于高效處理I/O密集型任務(wù),提高程序并發(fā)性;定時(shí)任務(wù)可用于定時(shí)執(zhí)行計(jì)劃任務(wù),提高程序的執(zhí)行效率。這兩種技術(shù)的應(yīng)用有助于提升Python程序的性能和效率
    2023-05-05
  • Opencv Python實(shí)現(xiàn)兩幅圖像匹配

    Opencv Python實(shí)現(xiàn)兩幅圖像匹配

    這篇文章主要為大家詳細(xì)介紹了Opencv Python實(shí)現(xiàn)兩幅圖像匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Python解析JSON對象的全過程記錄

    Python解析JSON對象的全過程記錄

    這篇文章主要給大家介紹了關(guān)于Python解析JSON對象的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python 修改本地網(wǎng)絡(luò)配置的方法

    python 修改本地網(wǎng)絡(luò)配置的方法

    今天小編就為大家分享一篇python 修改本地網(wǎng)絡(luò)配置的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 在Django的模型和公用函數(shù)中使用惰性翻譯對象

    在Django的模型和公用函數(shù)中使用惰性翻譯對象

    這篇文章主要介紹了在Django的模型和公用函數(shù)中使用惰性翻譯對象,Django是豐富多彩的Python框架中人氣最高的一個(gè),需要的朋友可以參考下
    2015-07-07
  • Python開發(fā)實(shí)例分享bt種子爬蟲程序和種子解析

    Python開發(fā)實(shí)例分享bt種子爬蟲程序和種子解析

    最近瘋狂的研究DHT網(wǎng)絡(luò)技術(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2014-05-05
  • Pytorch 如何加速Dataloader提升數(shù)據(jù)讀取速度

    Pytorch 如何加速Dataloader提升數(shù)據(jù)讀取速度

    這篇文章主要介紹了Pytorch 加速Dataloader提升數(shù)據(jù)讀取速度的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • pandas?dataframe寫入到hive方式

    pandas?dataframe寫入到hive方式

    這篇文章主要介紹了pandas?dataframe寫入到hive方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論