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)获得。
我正在为 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)获得。