0

我正在使用 Python 编写一个计算单词出现次数的程序。但是,为了计算,程序需要查看句子的开头,并且只计算以 % 开头的句子中的单词。例如,

%act: <dur> 把花生倒在盘子上

我想数花生这个词。程序应该返回 1。而,

*CHI:花生。

会返回 0 因为它以 * 开头所以我使用了 findall()

findall('\%.*?' + "花生", website_html)

但是,如果一个句子有两个“花生”,则模式匹配只会返回 1。例如

%act: <bef> 给花生。吃。<dur> 给出花生。<aft> 提供葡萄干

只会返回 1。

我怎样才能让它返回2?

谢谢

4

1 回答 1

1

我建议把它分成两部分。即,类似:

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

我不确定选择“以“%”开头的句子的正确正则表达式是什么——在这里我假设它的第一个字符是一行%(请注意,默认情况下.匹配换行符;另外,将多行模式下的正则表达式;并且 the是与行首匹配的零宽度断言。)。 (?m)^

我还要注意,\b我与花生相关的正则表达式中的 ' 是为了确保单词花生不是某个较大单词(例如花生)的子字符串。您可能需要也可能不需要它们,具体取决于您的任务的详细信息。

于 2012-05-23T17:24:40.367 回答