私は初心者で、最初のプログラミング言語として数か月間 Python を学んでいます。テキストファイルからパターンを探しています。私の最初の試みは正規表現を使用していました。これは機能しますが、制限があります。
import re
noun_list = ['bacon', 'cheese', 'eggs', 'milk', 'list', 'dog']
CC_list = ['and', 'or']
noun_list_pattern1 = r'\b\w+\b,\s\b\w+\b,\sand\s\b\w+\b|\b\w+\b,\s\b\w+\b,\sor\s\b\w+\b|\b\w+\b,\s\b\w+\b\sand\s\b\w+\b|\b\w+\b,\s\b\w+\b,\saor\s\b\w+\b'
with open('test_sentence.txt', 'r') as input_f:
read_input = input_f.read()
word = re.findall(noun_list_pattern1, read_input)
for w in word:
print w
else:
pass
したがって、この時点で、リストが使用されていないのに、なぜこのコードにリストがあるのかと疑問に思うかもしれません。さて、私は頭を悩ませ、あらゆる種類の for ループと関数内の if ステートメントを試して、正規表現パターンを複製する理由を見つけようとしましたが、リストを使用しました。
正規表現の制限は\b\w+\w\
、`noun_list_pattern' で何度も見つかったコードが、実際には単語 (任意の単語) のみを検出し、特定の名詞を検出しないことです。これにより、誤検知が発生する可能性があります。正規表現の代わりに上記のリストの要素を使用して、さらに絞り込みたいと思います。
実際には正規表現パターンに 4 つの異なる正規表現があるため (4 が含まれています|
)、ここではそのうちの 1 つを使用します。したがって、次のようなパターンを見つける必要があります。
'noun in noun_list' + ', ' + 'noun in noun_list' + ', ' + 'C in CC_list' + ' ' + 'noun in noun_list
明らかに、上記のコードで引用された行は実際の python コードではありませんが、必要な一致についての私の考えを表現したものです。私が言うところではnoun in noun_list
、noun_list の繰り返しを意味します。C in CC_list
CC_list の繰り返しです。,
コンマと空白に一致するリテラル文字列です。
うまくいけば、私は自分自身を明確にしました!
test_sentence.txt
私が使用しているファイルの内容は次のとおりです。
I need to buy are bacon, cheese and eggs.
I also need to buy milk, cheese, and bacon.
What's your favorite: milk, cheese or eggs.
What's my favorite: milk, bacon, or eggs.