2

我有一些用 YAML 创建的对象结构。在 YAML 内部使用了许多标签。因此,该文档不仅包含内置类型,还包含一些从注册构造函数创建的对象。我需要通过一些模式来检查它们。

到目前为止,我已经尝试过jsonpath、和。所有这些库都很棒,我喜欢查询语言(尤其是前两种),但它们严格期望作为输入。是否有一些原始对象的类似物?objectpathjmespathdpathJSON

4

2 回答 2

2

glom处理这个:

>>> from glom import glom
>>> from types import SimpleNamespace
>>> sn1 = SimpleNamespace()
>>> sn1.foo = SimpleNamespace()
>>> sn1.foo.bar = "baz"
>>> glom(sn1, "foo.bar")
'baz'
于 2020-06-19T21:12:14.820 回答
1

从我记得写 ObjectPath 的内容来看,有一些技术上的细微差别使得查询 Python 对象变得几乎不可能。有内置的对象和用 C 编写的不公开对象属性的类,还有隐藏其他类的私有属性等。

ObjectPath 应该适用于从 Dict 继承的类,但代码是实验性的。它可能对您来说开箱即用,如果不是,那么执行此操作的代码位于最新的 ObjectPath @ https://github.com/adriank/ObjectPath/blob/master/objectpath/core/interpreter.py#L47中。

于 2017-04-29T00:42:34.357 回答