私は、ユーザー入力(文字列)に応じて異なる情報を出力するボットを作っています。入力を解析し、異なる結果にリダイレクトするためのより良い方法がある場合、私は思ったんだけど:Pythonで文字列の入力を解析する方がいいですか?
def query(msg: str):
if re.compile(r"moci(o|ó)?n(es)? de (procedimiento)s?", re.IGNORECASE).search(msg):
return open("mociones/mocion_procedimiento.txt", "r").read()
elif re.compile(r"moci(o|ó)?n(es)? de (ó|o)?rden(es)?", re.IGNORECASE).search(msg):
return open("mociones/mocion_orden.txt", "r").read()
elif re.compile(r"moci(o|ó)?n(es)? de duda(s)?", re.IGNORECASE).search(msg):
return open("mociones/mocion_duda.txt", "r").read()
elif re.compile(r"moci(o|ó)?n(es)? de privilegio(s)?", re.IGNORECASE).search(msg):
return open("mociones/mocion_privilegio.txt", "r").read()
...
elif re.compile(r"defender (el|los)? anteproyectos?", re.IGNORECASE).search(msg):
return open("debate_particular/index.txt", "r").read()
elif re.compile(r"anteproyectos?", re.IGNORECASE).search(msg):
return open("anteproyecto/index.txt", "r").read()
else:
return "_*ERROR*_\n\nNo search results were found for \n`{query}`".format(query=msg)
*「良い」*どうやって?これが改善されると思われる作業コードの場合は、[codereview.se]を見てください。また、関数を呼び出すたびに正規表現を明示的に再コンパイルすると、コンパイルしない場合よりも効率が悪くなる可能性があります。コンパイルの恩恵を受けるには、関数を関数の外側に移動します。 – jonrsharpe