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

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

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

最近項(xiàng)目中有一個(gè)小需求,查找json文件中某個(gè)key或者value的路徑,所以就寫(xiě)了一個(gè)簡(jiǎn)單的小腳本,比較粗糙。

#!/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('請(qǐng)輸入json格式數(shù)據(jù)')
      exit()
 
    if isinstance(data, str):
      try:
        self.data = ast.literal_eval(data)
      except:
        logger.error('請(qǐng)輸入正確的json格式數(shù)據(jù)')
        exit()
    elif isinstance(data, dict):
      self.data = data
 
  def __paths(self, data, path=''):
    '''
    用于遍歷json樹(shù)
    :param data: 原始數(shù)據(jù),或者key對(duì)應(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):
    '''
    查找某個(gè)值的路徑
    :param key: 需要查找的值,限制為字符串,數(shù)字,浮點(diǎn)數(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字符串,然后對(duì)其取值

{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查找不限層級(jí)Json數(shù)據(jù)中某個(gè)key或者value的路徑方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 完美解決keras保存好的model不能成功加載問(wèn)題

    完美解決keras保存好的model不能成功加載問(wèn)題

    這篇文章主要介紹了完美解決keras保存好的model不能成功加載問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python實(shí)現(xiàn)字符串和日期相互轉(zhuǎn)換的方法

    python實(shí)現(xiàn)字符串和日期相互轉(zhuǎn)換的方法

    這篇文章主要介紹了python實(shí)現(xiàn)字符串和日期相互轉(zhuǎn)換的方法,涉及Python中time和datetime函數(shù)使用技巧,需要的朋友可以參考下
    2015-05-05
  • Pytorch:dtype不一致問(wèn)題(expected dtype Double but got dtype Float)

    Pytorch:dtype不一致問(wèn)題(expected dtype Double but&

    這篇文章主要介紹了Pytorch:dtype不一致問(wèn)題(expected dtype Double but got dtype Float),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler

    python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler

    這篇文章主要介紹了python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python變量賦值機(jī)制踩坑記錄

    python變量賦值機(jī)制踩坑記錄

    這篇文章主要介紹了python變量賦值機(jī)制踩坑記錄,我們都知道python有深拷貝和淺拷貝,但變量賦值又是什么機(jī)制呢?這是個(gè)容易被忽略卻又極易踩坑的點(diǎn),下面我們來(lái)一探究竟,需要的朋友可以參考一下
    2022-02-02
  • python的幾種矩陣相乘的公式詳解

    python的幾種矩陣相乘的公式詳解

    這篇文章主要介紹了python的幾種矩陣相乘的公式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python3簡(jiǎn)單爬蟲(chóng)抓取網(wǎng)頁(yè)圖片代碼實(shí)例

    Python3簡(jiǎn)單爬蟲(chóng)抓取網(wǎng)頁(yè)圖片代碼實(shí)例

    這篇文章主要介紹了Python3簡(jiǎn)單爬蟲(chóng)抓取網(wǎng)頁(yè)圖片代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python提取視頻幀圖片實(shí)例代碼

    Python提取視頻幀圖片實(shí)例代碼

    大家好,本篇文章主要講的是Python提取視頻幀圖片實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Windows下pycharm安裝第三方庫(kù)失敗(通用解決方案)

    Windows下pycharm安裝第三方庫(kù)失敗(通用解決方案)

    這篇文章主要介紹了Windows下pycharm安裝第三方庫(kù)失敗(通用解決方案),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python實(shí)現(xiàn)將元祖轉(zhuǎn)換成數(shù)組的方法

    python實(shí)現(xiàn)將元祖轉(zhuǎn)換成數(shù)組的方法

    這篇文章主要介紹了python實(shí)現(xiàn)將元祖轉(zhuǎn)換成數(shù)組的方法,涉及Python中l(wèi)ist方法的使用技巧,需要的朋友可以參考下
    2015-05-05

最新評(píng)論

浦北县| 青川县| 潍坊市| 登封市| 灵丘县| 巴彦淖尔市| 舞钢市| 宣恩县| 法库县| 新乡市| 霍林郭勒市| 天津市| 滨海县| 石林| 晴隆县| 汝州市| 林芝县| 重庆市| 四平市| 定远县| 滦平县| 汪清县| 海口市| 登封市| 万安县| 婺源县| 建阳市| 安徽省| 锦州市| 福贡县| 栾城县| 台湾省| 噶尔县| 彭州市| 鲁山县| 抚顺市| 甘孜| 阿荣旗| 石柱| 牡丹江市| 海兴县|