ObjectPath:" in"操作者

时间:2016-01-15 22:23:22

标签: python objectpath

我正在学习ObjectPath for python并且已经找到了,例如,如何对属性进行完全匹配:

>>> import objectpath
>>>
>>> tree = objectpath.Tree({'doc': {'title': 'Purple is Best Color'}})
>>>
>>> tree.execute('$..*[@.title is "Purple is Best Color"]').next()
{'title': 'Purple is Best Color'}

这对我有意义;我想从根($)开始,递归地(..)找到所有(*)项目(@),其标题为=="紫色是最好的颜色"。它有效!

然后我尝试使用in运算符进行类似的操作:

>>> tree.execute('$..*["Purple" in @.title]').next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

咦?看起来像是调整条件的自然方式,但它并不完全正确。

在手册中,我读到in 检查表达式左侧的结果是否在数组,对象或字符串中,以及对象中的,键是匹配。(也许这就是我的问题,但不确定这意味着什么)。我认为我现在的@确实是一个字符串......?

考虑到上述情况,我可以在这里找到什么?

2 个答案:

答案 0 :(得分:7)

有趣的是,明确地将Purple转换为字符串有效:

$..*[str("Purple") in @.title]

ObjectPath问题跟踪器上创建了一个问题:

答案 1 :(得分:4)

是个错误。它现在已经解决了。该修复程序可通过github(git clone https://github.com/adriank/ObjectPath.git)获得。