4

私は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 は、式の左側の結果が配列、オブジェクト、または文字列にあるかどうかをチェックし、オブジェクトではキーが一致することを読みました。(おそらくそれは私の問題ですが、ここで何を意味するのかよくわかりません)。私の電流@は確かに文字列だと思います...?

上記を考慮すると、ここで何が欠けているのでしょうか?

4

2 に答える 2

4

バグでした。これで修正されました。この修正は、github (git clone https://github.com/adriank/ObjectPath.git ) から入手できます。

于 2016-01-19T21:19:21.323 に答える