[本文出自天外歸雲的]
用python3對json內容逐層進行解析,拿中國天氣網的介面返回資料測試,**如下:
#其中json_4_test是待解析的json字串。-*- coding: utf-8 -*-
import
operator as op
from collections import
defaultdict
class
json(object):
def__init__
(self, json: str):
sth =eval(json)
load = lambda sth: sth if op.eq(type(sth).__name__, dict.__name__) else
none
self.json_dict =load(sth)
self.ret_j =defaultdict(dict)
self.analyze(self.json_dict)
def analyze(self, j_dict: dict, lvl=0) ->none:
lvl += 1
for k in
j_dict:
v =j_dict[k]
v_type =type(v)
try:":
")except
: self.ret_j[lvl][str(j_dict)] =":
")if op.eq(v_type.__name__, dict.__name__
): self.analyze(v, lvl)
elif op.eq(v_type.__name__, list.__name__
):
for each in
v:
if op.eq(type(each).__name__, dict.__name__
): self.analyze(each, lvl)
def get_analysis(self) ->none:
print(f"
這個json攏共分層")
print("
------")
for lvl in
self.ret_j:
print(f"
第層解析")
for root in
self.ret_j[lvl]:
print(f"
解析內容:")
for each in
self.ret_j[lvl][root]:
(each)
print("
------")
if__name__ == '
__main__':
try:
import
requests
except
: exit(0)
url = "
"r =requests.get(url)
d_r =r.content.decode()
json_4_test = d_r[d_r.index("
(") + 1:d_r.index(")"
)] json(json_4_test).get_analysis()
設計思路:
python3自定義函式
一 什麼是函式 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。函式能提高應用的模組性,和 的重複利用率。你已經知道python提供了許多內建函式,比如print 但你也可以自己建立函式,這被叫做使用者自定義函式。語法def 函式名 引數列表 函式體def func print 王小...
python3 自定義比較函式
python 2 中支援類似 c 中 cmp 的寫法 python 3 放棄了這一用法 官方說明 所以不想寫lambda的話,加一句cmp to key 就行了 def 比較函式 return 原來的方式是 sorted cmp 比較函式 現在的方式是 from functools import c...
python3 自定義比較器
摘要 在一些場景中,需要重新對已有的資料排序,可能所給出的資料型別或者資料數量較多,需要給定排序規則。import functools def by score t1,t2 if t1 0 t2 0 return 1 elif t1 0 t2 1 return 1 elif t1 1 t2 1 re...