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

Python查找不限層級Json數(shù)據(jù)中某個key或者value的路徑方式

 更新時間:2020年02月27日 14:30:44   作者:funcups  
今天小編就為大家分享一篇Python查找不限層級Json數(shù)據(jù)中某個key或者value的路徑方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

最近項目中有一個小需求,查找json文件中某個key或者value的路徑,所以就寫了一個簡單的小腳本,比較粗糙。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
'''
@author: funcups
'''
from logzero import logger
import ast
 
class HandleJson():
  def __init__(self, data):
    if data == None:
      logger.error('請輸入json格式數(shù)據(jù)')
      exit()
 
    if isinstance(data, str):
      try:
        self.data = ast.literal_eval(data)
      except:
        logger.error('請輸入正確的json格式數(shù)據(jù)')
        exit()
    elif isinstance(data, dict):
      self.data = data
 
  def __paths(self, data, path=''):
    '''
    用于遍歷json樹
    :param data: 原始數(shù)據(jù),或者key對應(yīng)的value值
    :param path: key值字符串,默認(rèn)值為''
    :return:
    '''
    if isinstance(data, dict):
      for k, v in data.items():
        tmp = path + "['%s']" % k
        yield (tmp, v)
        yield from self.__paths(v, tmp)
 
    if isinstance(data, list):
      for k, v in enumerate(data):
        tmp = path + '[%d]' % k
        yield (tmp, v)
        yield from self.__paths(v, tmp)
 
  def find_key_path(self, key):
    '''
    查找key路徑
    :param key: 需要查找路徑的key值
    :return: 包含key值路徑的list
    '''
    result = []
    for path,value in self.__paths(self.data):
      if path.endswith("['%s']" % key):
        result.append(path)
    with open('path.txt', 'w+', encoding='utf-8') as f:
      list(map(lambda line: f.write(line + '\r'), result))
    return result
 
  def find_value_path(self, key):
    '''
    查找某個值的路徑
    :param key: 需要查找的值,限制為字符串,數(shù)字,浮點數(shù),布爾值
    :return:
    '''
    result = []
    for path, value in self.__paths(self.data):
      if isinstance(value, (str, int, bool, float)):
        if value == key:
          result.append(path)
    with open('path.txt', 'w+', encoding='utf-8') as f:
      list(map(lambda line: f.write(line + '\r'), result))
    return result
 
if __name__ == '__main__':
  data = {'name': 'funcups'}
  hj = HandleJson(data)
  res = hj.find_key_path('name')
  print(res)
 
  res = hj.find_value_path('funcups')
  print(res)

補(bǔ)充拓展:python 獲取的json字符串取值

獲取到的json字符串,然后對其取值

{u'result': {u'10.10.10.100': {u'status': u'OK', u'msg': u"{'listen': {'': set([]), '25': set([]),
'22': set(['10.9.19.148', '10.10.10.1', '10.10.10.130'])}}"}}}

data = result.get('result').get(ip[0]).get('msg')

取值得到的是unicode字符串

轉(zhuǎn)換為字典 可用eval()函數(shù)

data = eval(result.get('result').get(ip[0]).get('msg'))

data = data.get('listen')

以上這篇Python查找不限層級Json數(shù)據(jù)中某個key或者value的路徑方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解python運行三種方式

    詳解python運行三種方式

    這篇文章主要介紹了python運行三種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python pickle模塊實現(xiàn)對象序列化

    Python pickle模塊實現(xiàn)對象序列化

    這篇文章主要介紹了Python pickle模塊實現(xiàn)對象序列化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python實現(xiàn)簡單名片管理系統(tǒng)

    python實現(xiàn)簡單名片管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡單名片管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python使用protobufde的過程解析

    python使用protobufde的過程解析

    Google開源的一個序列化框架,類似于xml , json。最大的特點是基于 二進(jìn)制,比傳統(tǒng)的xml表示同樣的內(nèi)容要短小很多。亦可定義一些可選字段,用于服務(wù)端與客戶端通信
    2021-08-08
  • TensorFlow實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN

    TensorFlow實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python實踐項目之監(jiān)控當(dāng)前聯(lián)網(wǎng)狀態(tài)詳情

    python實踐項目之監(jiān)控當(dāng)前聯(lián)網(wǎng)狀態(tài)詳情

    介紹一個利用Python監(jiān)控當(dāng)前聯(lián)網(wǎng)狀態(tài)情況的python代碼,它可以清楚地知道,你的電腦網(wǎng)絡(luò)是否是鏈接成功或失敗,下面小編帶大家來一起學(xué)習(xí)它
    2019-05-05
  • SQLite5-使用Python來讀寫數(shù)據(jù)庫

    SQLite5-使用Python來讀寫數(shù)據(jù)庫

    這篇文章主要介紹了SQLite5-使用Python來讀寫數(shù)據(jù)庫,數(shù)據(jù)庫的實際應(yīng)用,通常需要與程序結(jié)合起來,通過程序來實現(xiàn)對數(shù)據(jù)庫的訪問和讀寫。本篇先介紹Python語言來調(diào)用SQLite數(shù)據(jù)庫,想具體了解的小伙伴可以參考一下</P><P>
    2021-12-12
  • python進(jìn)行相關(guān)性分析并繪制散點圖詳解

    python進(jìn)行相關(guān)性分析并繪制散點圖詳解

    這篇文章主要介紹了python進(jìn)行相關(guān)性分析并繪制散點圖,具有一定借鑒價值,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • python實現(xiàn)飛機(jī)大戰(zhàn)項目

    python實現(xiàn)飛機(jī)大戰(zhàn)項目

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)飛機(jī)大戰(zhàn)項目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python中for循環(huán)變量作用域及用法詳解

    python中for循環(huán)變量作用域及用法詳解

    這篇文章主要介紹了python中for循環(huán)變量作用域及用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11

最新評論