我有一些用YAML创建的对象结构。在YAML内部使用了许多标签。因此,该文档不仅包含内置类型,还包含从已注册的构造函数创建的一些对象。我需要通过一些模式来检查它们。
到目前为止,我已尝试jsonpath
,objectpath
,jmespath
和dpath
。所有这些库都很棒,我喜欢查询语言(特别是前两个),但他们严格要求JSON
作为输入。是否有一些原始对象的类比?
答案 0 :(得分:1)
从我记得编写ObjectPath开始,有一些技术细微差别使查询Python对象变得难以实现。有用C编写的内置对象和类,不暴露对象属性,有隐藏其他类的私有属性等。
ObjectPath应该可以很好地处理从Dict继承的类,但代码是实验性的。它可以为您开箱即用,如果没有,那么代码就是最新的ObjectPath @ https://github.com/adriank/ObjectPath/blob/master/objectpath/core/interpreter.py#L47。
答案 1 :(得分:1)
glom处理此问题:
>>> from glom import glom
>>> from types import SimpleNamespace
>>> sn1 = SimpleNamespace()
>>> sn1.foo = SimpleNamespace()
>>> sn1.foo.bar = "baz"
>>> glom(sn1, "foo.bar")
'baz'