亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用python解析json字段的3種方式實例

 更新時間:2022年07月26日 09:27:13   作者:H.S.T不想卷  
JSON(JavaScript?Object?Notation)是一種輕量級的數據交換格式,下面這篇文章主要給大家介紹了關于使用python解析json字段的3種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

1、運用re、json、jsonpath包解析json思路

(1)re:正則表達式,通過json的形式對癥下藥,寫表達式去解析json;

(2)json: 通過json中的json.loads()方法,將str類型轉為dict類型,運用python字典的數據結構特點去解析json;

(3)jsonpath:對比與json包,jsonpath可以根據路徑去解析json,比較適合用來解析json中帶“[ ]”的數據。

2、三種方式的json解析案例

#json數據樣式,本文采用帶[]的數據樣式
{
    "version": "version 1.0.12",
    "result": {
        "pages": 1314,
        "data": [
            {
                "name": "大明",
                "IDcard": "440588190001015688",
                "address": "廣東省廣州市天河區(qū)正佳廣場99樓520號",
            },
            {
                "name": "二明",
                "IDcard": "440588190012317456",
                "address": "廣東省廣州市天河區(qū)天環(huán)廣場88樓520號",
            }
        ]
    }
}

(1)運用re正則表達式解析json

import re
jsondata={
    "version": "23231cimesfedkk",
    "result": {
        "pages": 1314,
        "data": [
            {
                "name": "大明",
                "IDcard": "440588190001015688",
                "address": "廣東省廣州市天河區(qū)正佳廣場99樓520號",
            },
            {
                "name": "二明",
                "IDcard": "440588190012317456",
                "address": "廣東省廣州市天河區(qū)天環(huán)廣場88樓520號",
            }
        ]
    }
}

if __name__ == '__main__':
    name_list=re.findall(r"'name': '(\w*)'",str(jsondata))
    IDcard_list=re.findall(r"'IDcard': '(\w{18})'", str(jsondata))#身份證18位數字和字母組合
    address_list=re.findall(r"'address': '(\w*)'", str(jsondata))#地址
    print(name_list)
    print(IDcard_list)
    print(address_list)

運行結果:

['大明', '二明']
['440588190001015688', '440588190012317456']
['廣東省廣州市天河區(qū)正佳廣場99樓520號', '廣東省廣州市天河區(qū)天環(huán)廣場88樓520號']

(2)運用字典的數據結構性質解析json

import json
jsondata={"version": "23231cimesfedkk","result": {"pages": 1314,"data": [{"name": "大明","IDcard": "440588190001015688","address": "廣東省廣州市天河區(qū)正佳廣場99樓520號",},{"name": "二明","IDcard": "440588190012317456","address": "廣東省廣州市天河區(qū)天環(huán)廣場88樓520號",}]}}
if __name__ == '__main__':
    # 若傳入的數據為str類型需要將它轉成dict類型
    # result = json.loads(jsondata)
    jsondata = jsondata["result"]["data"]
    resultdata = jsondata
    namelist=[]
    idcardlist=[]
    addresslist=[]
    for data in resultdata:
        namelist.append(data['name'])
        idcardlist.append(data['IDcard'])
        addresslist.append(data['address'])
    print(namelist)
    print(idcardlist)
    print(addresslist)

運行結果:

['大明', '二明']
['440588190001015688', '440588190012317456']
['廣東省廣州市天河區(qū)正佳廣場99樓520號', '廣東省廣州市天河區(qū)天環(huán)廣場88樓520號']

(3)運用jsonpath的路徑解析json

import jsonpath

jsondata={"version": "23231cimesfedkk","result": {"pages": 1314,"data": [{"name": "大明","IDcard": "440588190001015688","address": "廣東省廣州市天河區(qū)正佳廣場99樓520號",},{"name": "二明","IDcard": "440588190012317456","address": "廣東省廣州市天河區(qū)天環(huán)廣場88樓520號",}]}}
if __name__ == '__main__':
    namelist=[]
    idcardlist=[]
    addresslist=[]
    #運用jsonpath.jsonpath(字典數據, 路徑)
    namelist=jsonpath.jsonpath(jsondata, '$..name')
    idcardlist=jsonpath.jsonpath(jsondata, '$..IDcard')
    addresslist=jsonpath.jsonpath(jsondata, '$..address')
    print(namelist)
    print(idcardlist)
    print(addresslist)

運行結果:

['大明', '二明']
['440588190001015688', '440588190012317456']
['廣東省廣州市天河區(qū)正佳廣場99樓520號', '廣東省廣州市天河區(qū)天環(huán)廣場88樓520號']

3、附錄:re正則表達式語法

附:python 處理非標準 json 格式字符串

在寫爬蟲的時候,會發(fā)現很多數據都是通過 json 格式進行傳輸的,標準的 json 我們可以將其轉化為 Python 中的數據類型,進行查詢,但對于一些類似于 json 但又非標準 json 格式的字符,就會比較頭疼了,這里統(tǒng)計一些咱遇到的非標準的 json 格式,及相應的解析方法。

字符串中 key 的值沒有被單引號包裹

類似于這種字符,看上去格式和 json 很像(眼尖的朋友可能發(fā)現了,這是 qq 的數據 嘿嘿),但仔細觀察會發(fā)現,這其中的 key 沒有被單引號包裹起來,這就導致了它無法被簡單的解析為字典類型,因為解析的時候 key 會被解析成相應的變量而非字符,這些變量又都沒有定義,所以會報錯。

那怎么辦呢?咱的第一反應是利用正則去人為構造成標準的格式,不過這個難度系數有點大,對正則的要求挺高,還費腦子,明顯不符合咱的風格。于是咱就去網上找了一下,有沒有現成的方法,還真有呢:

使用 demjson

首先安裝 demjson

pip install demjson
s = '{suggestion:[{query:"London",interpretation: \'abc\'}]}'
dict1 = demjson.decode(s)
print(dict1)
{'suggestion': [{'interpretation': 'abc', 'query': 'London'}]}

總結

到此這篇關于使用python解析json字段的3種方式的文章就介紹到這了,更多相關python解析json字段內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python寫的一個簡單監(jiān)控系統(tǒng)

    Python寫的一個簡單監(jiān)控系統(tǒng)

    這篇文章主要介紹了Python寫的一個簡單監(jiān)控系統(tǒng),本文講解了詳細的編碼步驟,并給給出相應的實現代碼,需要的朋友可以參考下
    2015-06-06
  • Python虛擬環(huán)境Virtualenv使用教程

    Python虛擬環(huán)境Virtualenv使用教程

    這篇文章主要介紹了Python虛擬環(huán)境Virtualenv簡明教程,本文整合了兩篇關于Virtualenv的使用教程,相信大家有通過本文一定可以學會如何使用Virtualenv,需要的朋友可以參考下
    2015-05-05
  • Python生成二維碼的教程詳解

    Python生成二維碼的教程詳解

    作為一名合格的?Python?程序員,在工作中必然會用到二維碼相關操作,那如何快速的用?Python?實現呢?別著急,咱們這篇博客就為你解決
    2022-10-10
  • Python使用pickle模塊實現序列化功能示例

    Python使用pickle模塊實現序列化功能示例

    這篇文章主要介紹了Python使用pickle模塊實現序列化功能,結合實例形式分析了基于pickle模塊的序列化操作相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • 小白學Python之實現OCR識別

    小白學Python之實現OCR識別

    將圖片翻譯成文字一般被稱為光學文字識別(Optical Character Recognition,OCR),這篇文章主要給大家介紹了關于Python實現OCR識別的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • 在pycharm中實現刪除bookmark

    在pycharm中實現刪除bookmark

    今天小編就為大家分享一篇在pycharm中實現刪除bookmark,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 使用tqdm顯示Python代碼執(zhí)行進度功能

    使用tqdm顯示Python代碼執(zhí)行進度功能

    在使用Python執(zhí)行一些比較耗時的操作時,為了方便觀察進度,通常使用進度條的方式來可視化呈現。這篇文章主要介紹了使用tqdm顯示Python代碼執(zhí)行進度,需要的朋友可以參考下
    2019-12-12
  • pandas.DataFrame.iloc的具體使用詳解

    pandas.DataFrame.iloc的具體使用詳解

    本文主要介紹了pandas.DataFrame.iloc的具體使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • pycharm中連接mysql數據庫的步驟詳解

    pycharm中連接mysql數據庫的步驟詳解

    在進行Python研發(fā)的時候,pycharm是一個很好的IDE,下面這篇文章主要給大家介紹了pycharm中連接mysql數據庫的步驟,文中通過圖文介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Python中字符串轉換為列表的常用方法總結

    Python中字符串轉換為列表的常用方法總結

    本文將詳細介紹Python中將字符串轉換為列表的八種常用方法,每種方法都具有其獨特的用途和適用場景,文中的示例代碼講解詳細,感興趣的可以了解下
    2023-11-11

最新評論