You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用re.findall统计txt文件中指定单词的出现次数

修复用re.findall统计文本中单词出现次数的代码

嘿,我瞅了下你写的代码,有几个小问题导致它没法正常工作,我给你梳理下并修正:

原代码的问题点:

  • re.findall('Hello') 用法错误:re.findall() 必须传入两个参数,第一个是正则表达式,第二个是要匹配的目标字符串(这里就是每一行的line),少了第二个参数会直接报错。
  • 变量total的赋值逻辑错了:你每次循环都把total直接替换成re.findall的返回结果(一个列表),而不是累加匹配到的次数。应该用len()获取列表长度,再累加到total上。
  • print total的缩进不对:如果放在循环里,会每读一行就打印一次当前的total,我们需要的是读完所有内容后打印总次数,所以要把它移到循环外面。

修正后的代码:

# -*- coding: utf-8 -*-
import re

total = 0
with open('text.txt') as f:
    for line in f:
        # 用findall找到当前行所有匹配的"Hello",取长度累加到total
        matches = re.findall('Hello', line)
        total += len(matches)
# 循环结束后打印总次数
print(total)

额外优化建议:

如果需要不区分大小写的匹配(比如匹配"hello"、"HELLO"也算),可以给re.findall加第三个参数re.IGNORECASE:

matches = re.findall('Hello', line, re.IGNORECASE)

如果要匹配独立的单词(比如避免把"HelloWorld"里的"Hello"也算进去),可以用正则的单词边界\b:

matches = re.findall(r'\bHello\b', line)

内容的提问来源于stack exchange,提问作者Markel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:05:20