最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python解析json字段的3種方式實(shí)例

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

1、運(yùn)用re、json、jsonpath包解析json思路

(1)re:正則表達(dá)式,通過(guò)json的形式對(duì)癥下藥,寫(xiě)表達(dá)式去解析json;

(2)json: 通過(guò)json中的json.loads()方法,將str類(lèi)型轉(zhuǎn)為dict類(lèi)型,運(yùn)用python字典的數(shù)據(jù)結(jié)構(gòu)特點(diǎn)去解析json;

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

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

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

(1)運(yùn)用re正則表達(dá)式解析json

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

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

運(yùn)行結(jié)果:

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

(2)運(yùn)用字典的數(shù)據(jù)結(jié)構(gòu)性質(zhì)解析json

import json
jsondata={"version": "23231cimesfedkk","result": {"pages": 1314,"data": [{"name": "大明","IDcard": "440588190001015688","address": "廣東省廣州市天河區(qū)正佳廣場(chǎng)99樓520號(hào)",},{"name": "二明","IDcard": "440588190012317456","address": "廣東省廣州市天河區(qū)天環(huán)廣場(chǎng)88樓520號(hào)",}]}}
if __name__ == '__main__':
    # 若傳入的數(shù)據(jù)為str類(lèi)型需要將它轉(zhuǎn)成dict類(lèi)型
    # 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)

運(yùn)行結(jié)果:

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

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

import jsonpath

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

運(yùn)行結(jié)果:

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

3、附錄:re正則表達(dá)式語(yǔ)法

附:python 處理非標(biāo)準(zhǔn) json 格式字符串

在寫(xiě)爬蟲(chóng)的時(shí)候,會(huì)發(fā)現(xiàn)很多數(shù)據(jù)都是通過(guò) json 格式進(jìn)行傳輸?shù)?,?biāo)準(zhǔn)的 json 我們可以將其轉(zhuǎn)化為 Python 中的數(shù)據(jù)類(lèi)型,進(jìn)行查詢(xún),但對(duì)于一些類(lèi)似于 json 但又非標(biāo)準(zhǔn) json 格式的字符,就會(huì)比較頭疼了,這里統(tǒng)計(jì)一些咱遇到的非標(biāo)準(zhǔn)的 json 格式,及相應(yīng)的解析方法。

字符串中 key 的值沒(méi)有被單引號(hào)包裹

類(lèi)似于這種字符,看上去格式和 json 很像(眼尖的朋友可能發(fā)現(xiàn)了,這是 qq 的數(shù)據(jù) 嘿嘿),但仔細(xì)觀察會(huì)發(fā)現(xiàn),這其中的 key 沒(méi)有被單引號(hào)包裹起來(lái),這就導(dǎo)致了它無(wú)法被簡(jiǎn)單的解析為字典類(lèi)型,因?yàn)榻馕龅臅r(shí)候 key 會(huì)被解析成相應(yīng)的變量而非字符,這些變量又都沒(méi)有定義,所以會(huì)報(bào)錯(cuò)。

那怎么辦呢?咱的第一反應(yīng)是利用正則去人為構(gòu)造成標(biāo)準(zhǔn)的格式,不過(guò)這個(gè)難度系數(shù)有點(diǎn)大,對(duì)正則的要求挺高,還費(fèi)腦子,明顯不符合咱的風(fēng)格。于是咱就去網(wǎng)上找了一下,有沒(méi)有現(xiàn)成的方法,還真有呢:

使用 demjson

首先安裝 demjson

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

總結(jié)

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

相關(guān)文章

  • 在Python中使用列表生成式的教程

    在Python中使用列表生成式的教程

    這篇文章主要介紹了在Python中使用列表生成式的教程,列表生成式是Python具有的重要特性,需要的朋友可以參考下
    2015-04-04
  • Python自動(dòng)登錄126郵箱的方法

    Python自動(dòng)登錄126郵箱的方法

    這篇文章主要介紹了Python自動(dòng)登錄126郵箱的方法,涉及Python針對(duì)郵箱操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 基于python實(shí)現(xiàn)動(dòng)態(tài)煙霧效果

    基于python實(shí)現(xiàn)動(dòng)態(tài)煙霧效果

    動(dòng)態(tài)煙霧效果常用于游戲和動(dòng)畫(huà)中,為場(chǎng)景增添 逼真的視覺(jué)效果,在這篇博客中,我們將使用Python和Pygame庫(kù)來(lái)創(chuàng)建一個(gè)逼真的煙霧動(dòng)畫(huà)效果,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-09-09
  • Python+tkinter實(shí)現(xiàn)一個(gè)繪圖風(fēng)格控件

    Python+tkinter實(shí)現(xiàn)一個(gè)繪圖風(fēng)格控件

    這篇文章主要為大家詳細(xì)介紹了Python如何利用tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)單的繪圖風(fēng)格控件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2023-09-09
  • 搞笑的程序猿:看看你是哪種Python程序員

    搞笑的程序猿:看看你是哪種Python程序員

    這篇文章主要介紹了搞笑的程序猿:看看你是哪種Python程序員,不久前,在互聯(lián)網(wǎng)上出現(xiàn)了一篇有趣的文章,講的是對(duì)于同一個(gè)問(wèn)題,不同層次的Python程序員編出的Python代碼,顯示出了不同的風(fēng)格,代碼都很簡(jiǎn)單,有趣,需要的朋友可以參考下
    2015-06-06
  • Python實(shí)例練習(xí)逆序輸出字符串講解

    Python實(shí)例練習(xí)逆序輸出字符串講解

    今天小編就為大家分享一篇關(guān)于Python字符串逆序輸出的實(shí)例講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2022-05-05
  • Python基于回溯法子集樹(shù)模板實(shí)現(xiàn)8皇后問(wèn)題

    Python基于回溯法子集樹(shù)模板實(shí)現(xiàn)8皇后問(wèn)題

    這篇文章主要介紹了Python基于回溯法子集樹(shù)模板實(shí)現(xiàn)8皇后問(wèn)題,簡(jiǎn)單說(shuō)明了8皇后問(wèn)題的原理并結(jié)合實(shí)例形式分析了Python回溯法子集樹(shù)模板解決8皇后問(wèn)題的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • python 爬取影視網(wǎng)站下載鏈接

    python 爬取影視網(wǎng)站下載鏈接

    一個(gè)簡(jiǎn)單的爬取影視網(wǎng)站下載鏈接的爬蟲(chóng),非常適合新手學(xué)習(xí),感興趣的朋友可以參考下
    2021-05-05
  • 詳解Python 3D引擎Ursina如何繪制立體圖形

    詳解Python 3D引擎Ursina如何繪制立體圖形

    Python有一個(gè)不錯(cuò)的3D引擎——Ursina。本文就來(lái)手把手教你認(rèn)識(shí)Ursina并學(xué)會(huì)繪制立體圖形,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • pyqt5 獲取顯示器的分辨率的方法

    pyqt5 獲取顯示器的分辨率的方法

    今天小編就為大家分享一篇pyqt5 獲取顯示器的分辨率的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06

最新評(píng)論

青田县| 纳雍县| 光泽县| 革吉县| 平潭县| 随州市| 周口市| 涟水县| 同心县| 十堰市| 朝阳市| 旬邑县| 景宁| 弥勒县| 利川市| 元氏县| 楚雄市| 河西区| 石门县| 称多县| 温泉县| 颍上县| 曲水县| 龙江县| 连江县| 土默特左旗| 柞水县| 内黄县| 北流市| 三亚市| 海南省| 九江县| 金坛市| 河北省| 长阳| 都江堰市| 深水埗区| 蓬溪县| 洛阳市| 宁都县| 平潭县|