0

Python を使用して、単語の出現回数をカウントするプログラムを作成しています。しかし、カウントするには、プログラムは文の先頭を見て、% で始まるセンテンス内の単語のみをカウントする必要があります。例えば、

%act: <dur> 皿にピーナッツを注ぐ

ピーナッツという言葉を数えたいです。プログラムは 1 を返す必要があります。

※CHI:ピーナッツ。

* で始まるため 0 が返されるので、findall() を使用しました

findall('\%.*?' + "ピーナッツ", website_html)

ただし、文に 2 つの「ピーナッツ」が含まれている場合、パターン マッチングは 1 のみを返します。たとえば、

%act: <bef> は peanut を与えます。食べる。<dur> は peanut を与えます。<aft> レーズンを与える

1 のみを返します。

2を返すにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

2つの部分に分割することをお勧めします。つまり、次のようなものです。

num_peanuts = 0
for sentence in re.findall(r'(?m)^%.*', website_html):
    num_peanuts = len(re.findall(r'\bpeanut\b', sentence))

「%」で始まる文を選択するための正しい正規表現が何であるかはわかりません。ここでは、最初の文字が次の行であると想定してい%ます(デフォルトでは改行と一致.ない(?m)ことに注意してください。また、マルチラインモードの正規表現。これ^は、行の先頭に一致するゼロ幅のアサーションです。)

また\b、ピーナッツ関連の正規表現の'は、ピーナッツという単語がより大きな単語(ピーナッツなど)のサブストリングではないことを確認するためのものであることに注意してください。タスクの詳細に応じて、それらが必要な場合と不要な場合があります。

于 2012-05-23T17:24:40.367 に答える