pyparsing を使用してテキストを解析しようとしています。私の機能を以下に示します。まず、私の辞書 (私の Web サイトで一般的に使用される用語の辞書) 内のすべての用語を含むリストを作成します。次に、この一般的に使用される単語のリストを文法に設定しました。次に、文法を使用して ZeroOrMore オブジェクトを構築します。最後に、文字列を解析し、文字列で見つかった一致を取得する必要があります。ただし、テキストの終わりが予期されていたことを訴える代わりに、ParseException がスローされます。
def map_dict_words(self, pbody):
dict_terms = [term.term for term in Dictionary.objects()]
look_for_these = oneOf(dict_terms, caseless=True).setResultsName("dict_words")
parseobj = ZeroOrMore(look_for_these)
matches = parseobj.parseString(pbody, parseAll=True)
print matches
pyparsing のホームページhttp://pyparsing-public.wikispaces.com/FAQsの FAQ によると、パーサーに文字列全体を解析させたい場合は、文法に StringEnd() を入れるか、オプションの引数 parseAll=True を使用する必要があります。コードから parseAll=True を削除すると機能しますが、文字列全体を解析しません。
何か案は?