91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中JsonPath提取器和正則提取器怎么使用

發布時間:2023-05-10 17:46:26 來源:億速云 閱讀:400 作者:iii 欄目:開發技術

這篇文章主要介紹了Python中JsonPath提取器和正則提取器怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python中JsonPath提取器和正則提取器怎么使用文章都會有所收獲,下面我們一起來看看吧。

1.1 正則提取器

正則提取(正則表達式只能提取字符串的數據)

1、re.seach:只匹配一個值,通過下標[1]取值,沒有匹配到返回None
2、re.findall:匹配多個值,返回列表list,多個值通過下標取值,沒有返回None

1.2 正則示例:

import re
import requests

a = requests.get("http://www.baidu.com")
# print(a.text)

b = re.search('charset=(.*?)><meta http-equiv=X-UA-Compatible content=IE=Edge>', a.text)
print(b)
print(b.group())
print(b.groups())
print(b.group(1))

結果:

<re.Match object; span=(94, 157), match='charset=utf-8><meta http-equiv=X-UA-Compatible co>
charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge>
('utf-8',)
utf-8

匹配通配符:

我們一般用(.*?)和(.+?)來匹配我們需要提取的數值

解釋:

  • . 表示任意一個字符

  • + 表示匹配它前面的表達式1次或者多次

  • * 表示匹配它前面的表達式0次或者多次

  • ? 表示匹配它前面的表達式1次或者多次

token = re.search('"token":"(.*?)",',res.text)[1]
print("token1:%s",%token)

token = re.findall('"token":"(.*?)",'res.text)
print("token2:%s",%token)

1.3 JsonPath提取器

JsonPath提取(JsonPath只能提取json格式的數據)

jsonpath.jsonpath ,返回的是一個list,通過下標取值,沒有返回None

JsonPath語法

符號描述
$查詢的根節點對象,用于表示一個json數據,可以是數據或者對象
@過濾器,處理的當前節點對象
*獲取所有節點
.獲取子節點
. .遞歸搜索,篩選所有符合條件的節點
?()過濾器表達式,篩選操作
[a]或者[a,b]迭代器下標,表示一個或多個數組下標

1.4 JsonPath提取器具體使用

下面使用一個JSON文檔演示JSONPath的具體使用。JSON 文檔的內容如下:

{
  "store": {
    "book":[
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

1、假設變量bookJson中已經包含了這段json字符串,可以通過一下代碼反序列化得到json對象:

books=json.loads(bookJson)

2、查看store下的bicycle的color屬性

checkurl = "$.store.bicycle.color"
print(jsonpath.jsonpath(data, checkurl))
# 輸出:['red']

3、輸出book節點中包含的所有對象

checkurl = "$.store.book[*]"
object_list = jsonpath.jsonpath(data, checkurl)
print(object_list)

#輸出
[{'category': 'reference', 'author': 'Nigel Rees', 'title': 'Sayings of the Century', 'price': 8.95}, 
{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]

4、輸出book節點的第一個對象

checkurl = "$.store.book[0]"
obj = jsonpath.jsonpath(data, checkurl)
print(obj)
# 輸出: ['category': 'reference', 'author': 'Nigel Rees', 'title': 'Sayings of the Century', 'price': 8.95}]

5、輸出book節點中所有對象對應的屬性title值

checkurl = "$.store.book[*].title"
titles = jsonpath.jsonpath(data, checkurl)
print(titles)
# 輸出: ['Sayings of the Century', 'The Lord of the Rings']

6、輸出book節點中category為fiction的所有對象

checkurl = "$.store.book[?(@.category=='fiction')]"
books=jsonpath.jsonpath(data, checkurl)
print(books)
#輸出
[{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]

7、輸出book節點中所有價格小于10的對象

checkurl="$.store.book[?(@.price<10)]"
books = jsonpath.jsonpath(data, checkurl)
print(books)
# 輸出: [{'category': 'reference', 'author': 'Nigel Rees', 'title':'Sayings of the Century', 'price': 8.95}]

8、輸出book節點中所有含有isb的對象

checkurl = "$.store.book[?(@.isbn)]"
books = jsonpath.jsonpath(data,checkurl)
print(books)
# 輸出: [{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]

關于“Python中JsonPath提取器和正則提取器怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Python中JsonPath提取器和正則提取器怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

义马市| 扶绥县| 宁晋县| 松阳县| 长顺县| 城口县| 福贡县| 南华县| 赤水市| 威远县| 井冈山市| 昌江| 汉沽区| 郸城县| 饶河县| 吉木萨尔县| 绿春县| 蒙城县| 类乌齐县| 辽源市| 华蓥市| 乌苏市| 茌平县| 子长县| 无极县| 松溪县| 桂林市| 七台河市| 镇康县| 酉阳| 保亭| 阜宁县| 新化县| 洛阳市| 双城市| 集贤县| 军事| 长寿区| 金川县| 霍邱县| 岑巩县|