我正在使用Python编写一个计算单词出现次数的程序。但是,为了计算,程序需要查看句子的开头并且只计算以%开头的句子中的单词。例如,
%act:< dur>把花生倒在盘子上
我想算出花生这个词。该程序应该返回1.而
* CHI:花生。
将返回0,因为它以*开头 所以我使用了findall()
findall('\%。*?'+“peanut”,website_html)
但是,如果一个句子有两个“花生”,那么模式匹配只会返回1.例如
%act:< bef>给花生。吃。 < DUR>给花生。 <船尾>给葡萄干
只会返回1.
如何让它返回2?
由于
答案 0 :(得分:1)
我建议将其分为两部分。即,像:
num_peanuts = 0
for sentence in re.findall(r'(?m)^%.*', website_html):
num_peanuts = len(re.findall(r'\bpeanut\b', sentence))
我不确定正确的正则表达式选择“以”%“开头的句子 - 这里我假设它是第一个字符为%
的行(请注意默认情况下{{ 1}} 不匹配换行符;同样,.
将regexp置于多行模式; (?m)
是一个零宽度断言,匹配行的开头。)。
我还会注意到,与花生相关的正则表达式中的^
是为了确保花生这个词不是某个较大词的子串(例如花生)。您可能会也可能不想要它们,具体取决于您的任务细节。