glom
是一种用Python处理数据的新方法,具有以下特点:
- 嵌套结构并基于路径访问
- 使用轻量级的Pythonic规范进行声明性数据转换
- 可读、有意义的错误信息
- 内置数据探测和调试功能
- …
在上一篇博文当中,简要记录一下glom
的使用,以及一些它的特性!接下来,将记录一下glom
更多方法的使用:
glom.glom(target, spec, **kwargs)
从给定的target,根据spec声明规范构造一个值
反问嵌套数据,我们可以这样:
from glom import glom
target = {"a": {"b": "c"}}
print(glom(target, "a.b")) # c
这里的规范一个表示路径的字符串。下面我们来构建或重构更加复杂的嵌套数据:
from glom import glom
target = {"a": 1, "b": {"c": 1, "d": 2}, "c": [0, 1, 2]}
spec = {"a": "a", "b": "b.c", "c": ("c", [lambda x: x * 2])}
print(glom(target, spec))
######## 打印结果如下 ########
{'a': 1, 'b': 1, 'c': [0, 2, 4]}
glom
还支持一个default参数用于设置默认值。如果设置了此值,那么glom
操作失败之后将会自动返回默认值,类似dict.get()
,如下:
spec = "a.xx"
print(glom(target, spec, default=1234)) # 1234
在target数据中可以看到,并没有哪个路径为“a.xx”,所以glom
返回默认值为1234。
另外,我们还可以指定skip_exc
参数来控制哪些错误应该被忽略,如下:
print(glom({}, lambda x: 100 / len(x), default=0, skip_exc=ZeroDivisionError)) # 0
glom
支持的参数说明如下:
- target:
glom
将在其上运行的对象