私はリストに多くのテキストを入れており、これらのテキストを詳細に検索して特定のエントリを探したいと思っています。 たとえば、テキストフィールドに '(aaaまたはbbb)と(cccまたはdddまたはeee)'のようないくつかのリクエストを入力して、これらの基準を含む対応するリストエントリを探したいとします。Pythonの論理式から文字列を検索する
だから私の検索方法は、そのようなことをするでしょう:
# '(aaa or bbb) and (ccc or ddd or eee)'
results = []
for text in textlist:
if (text.find('aaa') != -1 or text.find('bbb') != -1) and (text.find('ccc') != -1 or text.find('eee') != -1 or text.find('fff') != -1):
results.append(text)
私は私の検索を解析し、多くのfindメソッドで、if文にそれを変換する方法を知りません。
まず、検索をコードする良い方法はありますか?より最適化された?ライブラリを持っていますか? 第2に、検索の解析方法は? ifを構築する方法は?
私は私の要求とIを解析するpyparsing nestedExpr方法は、そのリストを取得した使用: [[ 'AAA'、 'または'、 'BBB']、 'と'、[ 'CCC'、 'または' を、 'ddd'、 'or'、 'eee']]
質問はどのように解析して効果的な検索を行うのですか?たとえば、正規表現?
編集:
OK私は、この式を有する: "Aまたは(BまたはC)及び(DまたはE、またはFまたはG)またはHではない式(I又はJ)"
をそして、私はこの構造を得ます: ['a'、 'or'、['b'、 'or'、 'c']、 'and'、['d'、 'or'、 'e' 'または'、 'f'、 'or'、 'g']、 'or'、 'h'、 'not'、['i'、 'or'、 'j']]
これを解析して正規表現を構築しますか?正規表現以外のすべてのこれらの用語を検索する簡単な方法はありますか?それは正規表現を構築することは困難であると思われるので...ここで
[正規表現](https://en.wikipedia.org/wiki/Regular_expression)は、Pythonの['re'モジュール](https://docs.python.org)で見ることができます。 /3/library/re.html)。 – kazemakase
正規表現ではベルが鳴りますか? –
'(aaaまたはbbb)や(cccまたはdddまたはeee)'のような文字列を正規表現に変換する方法がわかりません... ' – emurb