私は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'}
これは私には理にかなっています。ルート ( $
) から開始して、再帰的に ( ..
) すべての ( *
) アイテム ( @
) を検索したいのですが、タイトル == 「紫は最高の色」です。そしてそれはうまくいきます!
しかし、私はin
演算子で似たようなことを試みます:
>>> tree.execute('$..*["Purple" in @.title]').next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
は?条件を微調整する自然な方法のように思えますが、それは正しくありません。
マニュアルでin
は、式の左側の結果が配列、オブジェクト、または文字列にあるかどうかをチェックし、オブジェクトではキーが一致することを読みました。(おそらくそれは私の問題ですが、ここで何を意味するのかよくわかりません)。私の電流@
は確かに文字列だと思います...?
上記を考慮すると、ここで何が欠けているのでしょうか?