web-dev-qa-db-ja.com

Python 3、モジュール 'itertools'には属性 'ifilter'がありません

私はPythonの初心者で、古いpythonファイルをPythonにビルドしようとしています。3。いくつかのビルドエラーが発生しましたが、解決しました。しかし、この時点で上記のエラーが発生します。これを修正する方法がわかりません。コードセクションは次のようになります。

return itertools.ifilter(lambda i: i.state == "IS", self.storage)
22
Sohag Mony

組み込みの itertools.ifilter() function が同じ機能を提供するため、filter()はPython 3で削除されました。

Python 2とPython 3の両方で実行できるコードを記述する必要がある場合は、 future_builtinsモジュール (Python 2の場合のみなので、try...except ImportError: ガード):

try:
    # Python 2
    from future_builtins import filter
except ImportError:
    # Python 3
    pass

return filter(lambda i: i.state == "IS", self.storage)
31
Martijn Pieters