我正在学习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'}
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义; 我想从root($)开始,递归地(..)找到所有(*)项目(@),其中title =="紫色是最佳颜色".它的工作原理!
但后来我尝试与in运营商类似的东西:
>>> tree.execute('$..*["Purple" in @.title]').next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Run Code Online (Sandbox Code Playgroud)
咦?看起来像是调整条件的自然方式,但它并不完全正确.
在手册中,我读到了in 检查表达式左侧的结果是否在数组,对象或字符串中,以及在对象中是否匹配键.(也许那是我的问题,但不确定这意味着什么).我认为我现在@的确是一个字符串...?
考虑到上述情况,我可以在这里找到什么?