Python從0到100(三十八):json字符串的數據提取

在這里插入圖片描述

JSON的數據提取

1.學習目標

  1. 掌握JSON相關的方法(load, loads, dump, dumps
  2. 了解JSONPath的使用(提取JSON中的數據)

2 復習什么是JSON

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。適用于進行數據交互的場景,比如網站前臺與后臺之間的數據交互。

3 JSON模塊中方法的學習

  • json.load(): 從文件對象中讀取JSON數據。
  • json.loads(): 從字符串中讀取JSON數據。
  • json.dump(): 將Python對象寫入文件對象,格式為JSON。
  • json.dumps(): 將Python對象轉換為JSON格式的字符串。

4 JSONPath模塊的學習

4.1 JSONPath介紹

JSONPath 是一種信息抽取類庫,是從JSON文檔中抽取指定信息的工具,提供多種語言實現版本,包括:Javascript, Python,PHP 和 Java。

4.2 JsonPath 對于 JSON 來說,相當于 XPath 對于 XML。
安裝方法:pip install jsonpath官方文檔:[JSONPath - XPath for JSON](http://goessner.net/articles/JsonPath)
4.3 JsonPath語法:
  • 使用點符號.來表示當前對象。
  • 使用方括號[]來表示數組索引或對象屬性。
  • 使用星號*作為通配符匹配所有成員名或數組索引。
  • 使用..表示遞歸下降,從當前位置開始,遍歷所有子元素。
  • 使用[start:end:step]表示數組切片操作。
4.4 語法使用示例
book_dict = { "store": {"book": [ { "category": "reference","author": "Nigel Rees","title": "Sayings of the Century","price": 8.95},# ... 其他書籍信息],"bicycle": {"color": "red","price": 19.95}}
}from jsonpath import jsonpathprint(jsonpath(book_dict, '$..author')) # 返回所有作者的列表
4.5 JSONPath表達式示例表
JSONPath結果說明
$.store.book[*].authorstore中的所有book的作者使用通配符*匹配所有book元素
$..author所有作者使用..遞歸匹配所有author
$.store.*store下的所有元素使用點符號.匹配所有直接子元素
$.store..pricestore中的所有內容的價格使用雙點..匹配所有嵌套價格
$..book[2]第三本書數組索引從0開始,因此是第三本書
$..book[(@.length-1)] | $..book[-1:]最后一本書使用腳本表達式或負索引
$..book[0,1] | $..book[:2]前兩本書使用數組切片或索引列表
$..book[?(@.isbn)]有ISBN的所有書使用過濾器表達式匹配有ISBN屬性的書
$..book[?(@.price<10)]價格小于10的所有書使用過濾器表達式匹配價格
$..*獲取所有數據使用通配符匹配所有元素

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44102.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44102.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44102.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

富文本braft-editor插件分享

效果展示 安裝插件 npm install braft-editor 或者 yarn add braft-editor 主要代碼 import React, { useState, forwardRef } from react //引入富文本編輯器 import BraftEditor from braft-editor // 引入編輯器樣式 import braft-editor/dist/index.css import { B…

thinkphp8框架源碼精講

前言 很開心你能看到這個筆記&#xff0c;相信你對thinkphp是有一定興趣的&#xff0c;正好大家都是志同道合的人。 thinkphp是我入門學習的第一個框架&#xff0c;經過這么多年了&#xff0c;還沒好好的研究它&#xff0c;今年利用了空閑的時間狠狠的深入源碼學習了一把&…

缺陷檢測總結

基于深度學習的缺陷檢測方法 1、全監督模型&#xff1a;基于表征學習的缺陷檢測模型&#xff0c;基于度量學習的缺陷檢測模型 1.1、基于表征學習的缺陷檢測模型&#xff1a;分類網絡&#xff0c;檢測網絡&#xff0c;分割網絡&#xff1b; 其中分類網絡的使用方式主要有三種…

2974. 最小數字游戲 Easy

你有一個下標從 0 開始、長度為 偶數 的整數數組 nums &#xff0c;同時還有一個空數組 arr 。Alice 和 Bob 決定玩一個游戲&#xff0c;游戲中每一輪 Alice 和 Bob 都會各自執行一次操作。游戲規則如下&#xff1a; 每一輪&#xff0c;Alice 先從 nums 中移除一個 最小 元素&a…

硅谷甄選運營平臺-vue3組件通信方式

vue3組件通信方式 vue2組件通信方式&#xff1a; props:可以實現父子組件、子父組件、甚至兄弟組件通信自定義事件:可以實現子父組件通信全局事件總線$bus:可以實現任意組件通信pubsub:發布訂閱模式實現任意組件通信vuex:集中式狀態管理容器&#xff0c;實現任意組件通信ref:父…

camunda最終章-springboot

1.實現并行流子流程 1.畫圖 2.創建實體 package com.jmj.camunda7test.subProcess.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable; import java.util.ArrayList; import java.util.List;Data …

C語言 | Leetcode C語言題解之第230題二叉搜索樹中第K小的元素

題目&#xff1a; 題解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int search_num(struct TreeNode* root, int k, int *result, int num) {if(num k 1){retu…

《Foundation 側邊欄》

《Foundation 側邊欄》 介紹 Foundation 是一個強大的前端框架,它提供了一套豐富的工具和組件,幫助開發者快速構建響應式、移動優先的網站和應用程序。在 Foundation 中,側邊欄是一個常用的組件,用于展示導航鏈接、菜單或其他相關信息。本文將詳細介紹如何在 Foundation …

FastGPT連接OneAI接入網絡模型

文章目錄 FastGPT連接OneAI接入網絡模型1.準備工作2.開始部署2.1下載 docker-compose.yml2.2修改docker-compose.yml里的參數 3.打開FastGPT添加模型3.1打開OneAPI3.2接入網絡模型3.3重啟服務 FastGPT連接OneAI接入網絡模型 1.準備工作 本文檔參考FastGPT的官方文檔 主機ip接…

JDBC 實例分享——簡易圖書管理系統

目錄 前言 數據表的建立 操作包各個類的實現 增加類 刪除類 展示類 借閱與歸還類 前言 書接上文 JDBC編程的學習——MYsql版本-CSDN博客 本期我們通過對先前圖書管理系統進行改造,是它的數據能保存在數據庫中 完整代碼我已經保存在github中,能不能給個星呢!!!! call…

記一次若依框架和Springboot常見報錯的實戰漏洞挖掘

目錄 前言 本次測實戰利用圖? 1.判段系統框架 2.登錄頁面功能點測試 2.1 弱口令 2.2 webpack泄露信息判斷 2.3 未授權接口信息發現 3.進一步測試發現新的若依測試點 3.1 默認弱口令 3.2 歷史漏洞 4.訪問8080端口發現spring經典爆粗 4.1 druid弱口令 4.2 SwaggerU…

熱鍵危機:揭秘Memcached中的熱鍵問題及其解決方案

熱鍵危機&#xff1a;揭秘Memcached中的熱鍵問題及其解決方案 Memcached是一種廣泛使用的高性能分布式內存緩存系統&#xff0c;它通過緩存數據來減少對后端數據庫的訪問壓力&#xff0c;從而提高應用性能。然而&#xff0c;Memcached也可能遇到熱鍵&#xff08;hot key&#…

淺析Kafka-Stream消息流式處理流程及原理

以下結合案例&#xff1a;統計消息中單詞出現次數&#xff0c;來測試并說明kafka消息流式處理的執行流程 Maven依賴 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

Okhttp實現原理

OkHttp 是一個高效的 HTTP 客戶端庫&#xff0c;廣泛應用于 Android 和 Java 應用中。它提供了簡潔的 API&#xff0c;支持多種協議&#xff0c;如 HTTP/1.x 和 HTTP/2&#xff0c;并且內置了緩存和重試機制。下面是結合源碼分析的 OkHttp 的實現原理&#xff1a; 核心組件 O…

Swift 數據類型

Swift 數據類型 Swift 是一種強類型語言,這意味著在 Swift 中聲明的每個變量和常量都必須具有明確的類型。Swift 的類型系統旨在幫助開發者編寫清晰、安全的代碼。本文將詳細介紹 Swift 中的基本數據類型,包括整數、浮點數、布爾值、字符和字符串。 整數類型 Swift 提供了…

音頻語言學習領域數據集現狀、分類及評估

Audio Language Learning (Audio-Text Learning) 是一個新興的研究領域&#xff0c;專注于處理、理解和描述聲音。它的發展動力是機器學習技術的進步以及越來越多地將聲音與其相應的文本描述相結合的數據集的可用性。 Audio Language Models (ALMs) 是這個領域的關鍵技術&#…

MATLAB中的SDPT3、LMILab、SeDuMi工具箱

MATLAB中的SDPT3、LMILab、SeDuMi工具箱都是用于解決特定數學優化問題的工具箱&#xff0c;它們在控制系統設計、機器學習、信號處理等領域有廣泛的應用。以下是對這三個工具箱的詳細介紹&#xff1a; 1. SDPT3工具箱 簡介&#xff1a; SDPT3&#xff08;Semidefinite Progra…

基于QT開發的反射內存小工具

前言 最近項目需要需要開發一個反射內存小工具&#xff0c;經過2天的修修改終于完成了。界面如下&#xff1a; 功能簡介 反射內存指定地址數據讀取反射內存指定地址數據寫入反射內存指定地址數據清理十進制、十六進制、二進制數據相互轉換 部分代碼 void RfmMain::setWOthe…

SqlSugar-使用SqlSugar進行多數據庫操作

使用SqlSugar進行多數據庫操作主要涉及以下幾個步驟&#xff1a; 1. 配置數據庫連接 首先&#xff0c;你需要在項目的配置文件中&#xff08;如appsettings.json、web.config或app.config&#xff09;配置多個數據庫的連接字符串。每個連接字符串都對應一個不同的數據庫。 例…

攻防世界(PHP過濾器過濾)file_include

轉換過濾器官方文檔&#xff1a;https://www.php.net/manual/zh/filters.convert.php#filters.convert.iconv 這道題因為convert.base64-encode被過濾掉了&#xff0c;所以使用convert.iconv.*過濾器 在激活 iconv 的前提下可以使用 convert.iconv.* 壓縮過濾器&#xff0c; 等…