ObjectPath:"in" 运算符有问题

ObjectPath: trouble with "in" operator

我正在为 python 学习 ObjectPath,并且已经发现,例如,如何对属性进行精确匹配:

>>> 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'}

这对我来说很有意义;我想从根 ($) 开始并递归 (..) 查找所有 (*) 项 (@) 的标题 == "Purple is Best Color" .并且有效!

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

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

嗯?似乎是调整条件的自然方式,但它并不完全正确。

在手册中,我读到 in 检查表达式左侧的结果是否在数组 object 或字符串 中,并且在 objects 中,键是匹配的。(也许这是我的问题,但不确定这里的含义)。我觉得我现在的@确实是一个字符串...?

考虑到以上情况,我在这里还缺少什么?

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

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

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

是一个错误。现在修好了。该修复程序可通过 github(git 克隆 https://github.com/adriank/ObjectPath.git)获得。