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

Python3中對json格式數(shù)據(jù)的分析處理

 更新時(shí)間:2021年01月28日 14:41:57   作者:胎廠周師傅  
這篇文章主要介紹了Python3中對json格式數(shù)據(jù)的分析處理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

數(shù)據(jù)已經(jīng)過修改,以防泄密,請放心閱讀
今天同事提出一個(gè)需求,要求我修改之前的某腳本,該腳本的作用是獲取zabbix監(jiān)控系統(tǒng)返回的json數(shù)據(jù),我的任務(wù)是使其變成易讀的文本,如何獲取數(shù)據(jù)不在此贅述,只描述如何對json數(shù)據(jù)進(jìn)行處理

一、如何將json數(shù)據(jù)轉(zhuǎn)換成python內(nèi)部的數(shù)據(jù)類型

展示一下zabbix的接口返回的json數(shù)據(jù)(數(shù)據(jù)經(jīng)過dumps編碼了,因?yàn)樵瓟?shù)據(jù)為str類型,只有一行,不易讀)

js = json.dumps(get_alert(), indent=4, ensure_ascii=False)
print(js)
# get_alert()方法為獲取json數(shù)據(jù),編碼后賦給js,打印js,結(jié)果如下:
# indent = 4意為設(shè)置縮進(jìn)為4個(gè)空格,
# ensure_ascii=False參數(shù)是禁用ascii編碼,若不禁用,中文字符會輸出為ASCII碼
{
 "jsonrpc": "2.0",
 "result": [
  {
   "triggerid": "123456",
   "expression": "{23567}>95",
   "description": "High memory utilization > 95",
   "url": "",
   "status": "0",
   "value": "1",
   "priority": "4",
   "lastchange": "123456",
   "comments": "",
   "error": "",
   "templateid": "0",
   "type": "0",
   "state": "0",
   "flags": "0",
   "recovery_mode": "0",
   "recovery_expression": "",
   "correlation_mode": "0",
   "correlation_tag": "",
   "manual_close": "0",
   "opdata": "",
   "hosts": [
    {
     "hostid": "8888",
     "name": "window_sever"
    }
   ],
   "items": [
    {
     "itemid": "123456",
     "name": "Memory utilization",
     "description": "Memory used percentage is calculated as (100-pavailable)"
    }
   ]
  },
  {
   "triggerid": "17099",
   "expression": "{20221}<{$SWAP.PFREE.MIN.WARN} and {20222}>0",
   "description": "High swap space usage ( less than 20% free)",
   "url": "",
   "status": "0",
   "value": "1",
   "priority": "2",
   "lastchange": "123456789",
   "comments": "This trigger is ignored, if there is no swap configured",
   "error": "",
   "templateid": "16176",
   "type": "0",
   "state": "0",
   "flags": "0",
   "recovery_mode": "0",
   "recovery_expression": "",
   "correlation_mode": "0",
   "correlation_tag": "",
   "manual_close": "0",
   "opdata": "Free: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}",
   "hosts": [
    {
     "hostid": "10325",
     "name": "linus"
    }
   ],
   "items": [
    {
     "itemid": "31681",
     "name": "Free swap space in %",
     "description": ""
    },
    {
     "itemid": "123456",
     "name": "Total swap space",
     "description": ""
    }
   ]
  }
 ],
 "id": "3"
}

接下來我們需要對json對象進(jìn)行解碼

js_loads_data = json.loads(js)
# 解碼后的數(shù)據(jù)轉(zhuǎn)為python原生的字典類型(dict)

我們需要之后json對象里面的數(shù)據(jù)類型解碼為dict之后與之對應(yīng)的數(shù)據(jù)類型、

json python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

記不住沒有關(guān)系,有方法可以現(xiàn)查:

print(type(js_loads_data))
>>><class 'dict'>

通過type()方法可以查看解碼后數(shù)據(jù)js_loads_data的數(shù)據(jù)類型,發(fā)現(xiàn)他說字典類型,由此知道如何訪問它內(nèi)部的數(shù)據(jù)

print(js_loads_data["id"])
>>>3
print(type(js_loads_data["id"]))
>>><class 'str'>

訪問字典的值直接通過改變量的下標(biāo)訪問即可

同理

print(type(js_loads_data["result"]))

可以取出result數(shù)組,但是這樣是打印整個(gè)數(shù)組,那么如何取result數(shù)組的里面的值呢?

二、訪問json對象里嵌套的數(shù)組

我們知道,json對象轉(zhuǎn)為字典后,數(shù)組對應(yīng)的類型為列表(list)

所以我們可以通

print(type(js_loads_data["result"]))
>>><class 'list'>

過列表的下標(biāo)來訪問列表的內(nèi)容

print(js_loads_data['result'][0])
# 可以將列表下標(biāo)為0的一個(gè)數(shù)據(jù)取出來
print(type(js_loads_data['result'][0]))
>>><class 'dict'>
# 打印類型發(fā)現(xiàn),列表里面的第一個(gè)元素為字典類型,那么我們又知道了如何訪問該字典里面的數(shù)據(jù):
for key in js_loads_data['result'][0]:
 print(key, ":", js_loads_data['result'][0][key])
>>>略
>>>hosts : [{'hostid': '10358', 'name': 'FTPC01(192.168.19.5)'}]
>>>items : [{'itemid': '33152', 'name': 'Memory utilization', 'description': 'Memory used percentage is calculated as (100-pavailable)'}]
>>>略
# 依次打印鍵和值,觀察后發(fā)現(xiàn)hosts和items兩個(gè)元素還是列表類型,如要取值還要進(jìn)行處理

btw,分享一個(gè)取出列表所有元素的簡便方法:

result_list= [(item.get('hosts', 'NA')) for item in js_loads_data['result']]

這樣處理之后js_loads_data[‘result']三個(gè)字典里面的result列表已經(jīng)被我取出來賦值給result_list這個(gè)列表了,現(xiàn)在result_list是列表嵌套列表再嵌套字典的類型(不太好理解,注意觀察上面的json數(shù)據(jù)),這樣使接下來的操作更為簡單

for tmp in result_list:
 print(tmp[0].get('name'))
>>>windows sever
>>>linus

處理完成

三、總結(jié)

拿到一個(gè)json不要慌,

先編碼解碼,轉(zhuǎn)成python原生的數(shù)據(jù)類型一步步分析,用print(type(元素))的方法捋清楚每個(gè)元素的類型,明白整個(gè)json串的結(jié)構(gòu)搞明白每個(gè)類型的訪問方法這樣我們就可以對整個(gè)json數(shù)據(jù)為所欲為了!

到此這篇關(guān)于Python3中對json格式數(shù)據(jù)的分析處理的文章就介紹到這了,更多相關(guān)Python json格式數(shù)據(jù)分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python計(jì)時(shí)相關(guān)操作詳解【time,datetime】

    Python計(jì)時(shí)相關(guān)操作詳解【time,datetime】

    這篇文章主要介紹了Python計(jì)時(shí)相關(guān)操作,涉及time,datetime模塊的使用技巧,包括時(shí)間戳、時(shí)間差、日期格式等操作方法,需要的朋友可以參考下
    2017-05-05
  • python openCV自制繪畫板

    python openCV自制繪畫板

    這篇文章主要為大家詳細(xì)介紹了python openCV自制繪畫板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Python實(shí)現(xiàn)的彩票機(jī)選器實(shí)例

    Python實(shí)現(xiàn)的彩票機(jī)選器實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)彩票機(jī)選器的方法,可以模擬彩票號碼的隨機(jī)生成功能,需要的朋友可以參考下
    2015-06-06
  • 談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別

    談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別

    今天小編就為大家分享一篇談?wù)剶?shù)組拼接tf.concat()和np.concatenate()的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python qqbot 實(shí)現(xiàn)qq機(jī)器人的示例代碼

    Python qqbot 實(shí)現(xiàn)qq機(jī)器人的示例代碼

    這篇文章主要介紹了Python qqbot 實(shí)現(xiàn)qq機(jī)器人的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 詳解python selenium 爬取網(wǎng)易云音樂歌單名

    詳解python selenium 爬取網(wǎng)易云音樂歌單名

    這篇文章主要介紹了python selenium爬取網(wǎng)易云音樂歌單名,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python根據(jù)輸入?yún)?shù)計(jì)算結(jié)果的實(shí)例方法

    Python根據(jù)輸入?yún)?shù)計(jì)算結(jié)果的實(shí)例方法

    在本篇文章里小編個(gè)大家整理了一篇關(guān)于Python根據(jù)輸入?yún)?shù)計(jì)算結(jié)果的實(shí)例方法,有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2021-08-08
  • python判斷列表為空的三種方法總結(jié)

    python判斷列表為空的三種方法總結(jié)

    這篇文章主要介紹了python判斷列表為空的三種方法總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • numpy.bincount用于復(fù)數(shù)權(quán)重的方法

    numpy.bincount用于復(fù)數(shù)權(quán)重的方法

    numpy.bincount是NumPy庫中的一個(gè)函數(shù),它用于計(jì)算整數(shù)數(shù)組中每個(gè)值的出現(xiàn)次數(shù),numpy.bincount函數(shù)在統(tǒng)計(jì)整數(shù)數(shù)組中每個(gè)值的出現(xiàn)次數(shù)或權(quán)重和時(shí)非常有用,本文給大家介紹numpy.bincount如何用于復(fù)數(shù)權(quán)重,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • Python使用missingno模塊輕松處理數(shù)據(jù)缺失

    Python使用missingno模塊輕松處理數(shù)據(jù)缺失

    missingno是一個(gè)基于Python的開源數(shù)據(jù)可視化工具,旨在幫助數(shù)據(jù)分析師和科學(xué)家更好地理解和處理數(shù)據(jù)缺失,下面我們就來看看如何使用missingno處理數(shù)據(jù)缺失吧
    2024-02-02

最新評論

彩票| 昌宁县| 韩城市| 张家界市| 广平县| 安阳市| 上蔡县| 岐山县| 化州市| 巧家县| 盐亭县| 沈丘县| 湾仔区| 新龙县| 新沂市| 桑植县| 呼和浩特市| 曲水县| 大同市| 个旧市| 定襄县| 淮滨县| 长顺县| 镇原县| 饶阳县| 化德县| 宜丰县| 龙游县| 平潭县| 中阳县| 肥乡县| 道真| 凯里市| 潼关县| 桂林市| 东明县| 卢氏县| 兴安盟| 柯坪县| 大庆市| 桂林市|