glom模組的使用 二

2022-02-21 22:20:13 字數 2503 閱讀 2347

上次我們說到golm的簡單應用這次我們繼續帶結構化資料的其他操作進行學習。

用法:class glom.literal(value)

這個方法的功能主要是新增自定義的鍵值。

例如:

from glom import glom,literal

target = }

spec =

spec2 =

print(glom(target, spec))

print(glom(target, spec2))

輸出後可以發現結果是一樣的:

用法:classglom.coalesce(*subspecs, **kwargs)

該方法會對引數進行挨個嘗試,如果都沒有就報錯,但是可以給定乙個預設值,具體用法我們使用幾個例項,下面從簡單到複雜延時該方法的使用

from glom import glom,coalesce,coalesceerror

只查一級鍵值

target = 

g1=glom(target, coalesce('a', 'b', 'c'))

print(g1)

target =

# g2=glom(target, coalesce('a', 'b', 'm')) #找不到鍵值為a,b,m的所以報錯,型別coalesceerror。

# print(g2)

g3=glom(target, coalesce('a', 'b', 'm'),skip_exc=coalesceerror) #找不到鍵值為a,b,m的所以報錯,跳過錯誤coalesceerror,返回值為none。

print(g3)

g4=glom(target, coalesce('a', 'b', 'm'),default="666") #找不到鍵值為a,b,m的所以報錯,設定其值並返回值為666。

print(g4)

#查多級鍵值和之前的spec的使用方法是一樣的

target2 = ]}

spec1=#找b開始的鍵值,沒有找到然後找c找到了,再找c所在列表裡的鍵值t,輸出e

g5=glom(target2,spec1)

print(g5)

spec2=#因為a找到之後,會去找t,但是a後面沒有t了所以報錯。

g6=glom(target2,spec2,default="6666")#防止g6出錯,給定個預設值

print(g6)

target3 = ],"c":}

g7=glom(target3,spec2)

print(g7)

注意點:

經過上面的一系列操作可以發現,coalesce在找到第一級鍵值之後就不繼續往下找了,然後找下級的鍵值g6的情況因為a下面沒有t了所以報錯。

換做g7,因為a下面同樣有t所以可以輸出為。

用法glom.omit= sentinel('omit')

經過研究omit實際是返回乙個空的字典用的,我們來看**

target4 = 

spec3 =

g8=glom(target4, spec3)

target4 =

g9=glom(target4, spec3)

print(g8)

print(g9)

上面的**實際是,做一了乙個類似literal的功能。找鍵值為a的而且值為a的,如果找到就返回,找不到就賦值omit可以得到乙個空字典,當然們也可以把上面else omit替換為else "666"可以發現我們得到了乙個含有鍵值為666的結構化資料。

用法:glom.call(func, args=none, kwargs=none)

使用call減少lamda的使用率,做和lamda差不多的功能。

-當target裡面需要使用函式時除了使用lamda外還可以用call。

-call類似functools.partial的用法,另外可讀性比lamda要強的多。

from glom import glom,call,t

class exampleclass(object):

def __init__(self, attr):

self.attr = attr

self.name = "666"

target =

a=glom(target, call(exampleclass, kwargs=t))

等價於
glom(target, lambda target: exampleclass(**target))

print(a.name)

關於t的用法後續我們再進行研究。

glom模組使用(二)

經過諮詢庫的作者,在最後留的那個問題的準確解法如下 import glom target spec print glom.glom target,spec 非常棒,準確來說就是得靈活運用 coalesce 方法啊,不能太死板。非常 pythonic。另附 作者有個很搞笑 little four ha...

glom模組的使用 二

上次我們說到golm的簡單應用,glom模組的使用 一 這次我們繼續對glom的其他操作進行學習。literal 用法 class glom.literal value 這個方法的功能主要是新增自定義的鍵值。例如 from glom import glom,literaltarget spec sp...

glom模組的使用(一)

glom模組的使用 簡單說下glom模組主要是處理結構化資料用的,安裝pip install glom即可,下面就glom的方法引數做例子講解。和模組同名的glom方法使用方法 glom target,spec,kwargs target引數是結構化資料,一般是json巢狀型別。spec引數是定義模...