如何使用Python正则实现整词匹配、打印对应行并统计单词出现次数?
正确实现代码
原代码问题梳理
- 字符串格式化未加f前缀,
\b{y}\b无法正确插值,且\b作为退格转义符需要用raw字符串才能表示正则规则里的单词边界 - 匹配逻辑错误,直接用
in无法实现不区分大小写的整词匹配,判断条件误写为z in text,应该匹配当前行的内容 - return缩进错误,放在for循环内部会导致第一次循环就直接返回结果
- 只统计了匹配行数,没有统计单行文本内的多次匹配次数
可运行实现
import re # 你提供的原始文本列表 text = ['Hi my name is Jackson. Hello. Hello my name is Sofia.', 'Hi Sofia, Hello!', 'hello Jackson', 'hi', 'hi, Hello123', 'hi', 'Helllo, HeLlo'] def func(y): counter = 0 # 编译正则规则:单词边界+转义目标词+单词边界,开启不区分大小写匹配 pattern = re.compile(rf'\b{re.escape(y)}\b', flags=re.IGNORECASE) for x in text: # 查找当前行所有符合规则的匹配项 matches = pattern.findall(x) match_count = len(matches) if match_count > 0: # 存在匹配就打印当前行 print(x) counter += match_count # 遍历完全部行后再返回总匹配次数 return counter
效果验证
调用func('hello')时会依次打印3行匹配内容:
Hi my name is Jackson. Hello. Hello my name is Sofia. Hi Sofia, Hello! hello Jackson
最终返回值为4,符合预期:第一行匹配2次Hello,第二行匹配1次Hello,第三行匹配1次hello,总次数为4;Hello123后缀带数字不符合整词规则被排除,Helllo多了一个l也被排除。
内容的提问来源于stack exchange,提问作者bot 2
相关产品推荐
相关产品推荐

