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

如何统计目录下所有文件中指定关键词的总出现次数

如何统计目录下所有文件中指定关键词的总出现次数

嘿,我来帮你搞定这个问题!你现在已经能统计单个文件里的关键词出现次数了,要汇总总次数其实很简单,咱们先从修改你现有的代码开始~

方案一:修改你原有代码实现总统计

你之前的代码每次循环文件时都会重新创建统计字典,导致无法累加总次数。只需要把总计数器移到文件循环外面,每次读取文件后把当前文件的统计结果累加到总计数器里就行:

import re

keywords = ['river']
# 初始化总计数器,给每个关键词设置初始值0
total_keywords = {key: 0 for key in keywords}

# 这里替换成你的文件路径列表,比如用glob或pathlib获取所有目标文件
docs = ["file1.txt", "file2.txt", "subdir/file3.txt"]

for doc in docs:
    with open(doc, 'r') as file:
        data = file.read()
    
    # 统计当前文件的关键词出现次数
    current_found = {}
    for key in keywords:
        # 忽略大小写匹配关键词
        found = re.findall(key, data, re.I)
        current_count = len(found)
        current_found[key] = current_count
        # 把当前文件的次数累加到总计数器
        total_keywords[key] += current_count
    
    # 打印单个文件的统计结果(可选)
    print(f"文件 {doc} 的统计结果:{current_found}")

# 最后输出所有文件的总统计
print("\n=== 所有文件的总统计结果 ===")
for key, count in total_keywords.items():
    print(f"关键词 '{key}' 总共出现了 {count} 次")

分析你之前尝试的错误

第一个Counter方案的问题

你把文件循环嵌套在了关键词循环里面,不仅效率低,还可能因为变量未定义(比如your_list_of_words没替换成实际的关键词列表)导致报错。调整循环顺序后的正确写法如下:

import re
from collections import Counter
from pathlib import Path

keywords = ['river']
counter = Counter()

# 先遍历目录下所有txt文件
for file in Path("你的目录路径").glob("*.txt"):
    with open(file, 'r') as stream:
        data = stream.read()
    
    # 遍历每个关键词,统计当前文件中的匹配次数并更新计数器
    for word in keywords:
        matches = re.findall(word, data, re.I)
        counter.update(matches)

# 输出总统计
for word in keywords:
    print(f"关键词 '{word}' 总出现次数:{counter[word]}")

第二个正则方案的问题

你写的word - 'river'是语法错误(应该用等号word = 'river'),而且all_docs没有定义——你需要先把所有文件的内容合并成一个字符串,再进行统计:

import re
from pathlib import Path

word = 'river'
all_content = ""

# 读取所有文件内容合并成一个字符串
for file in Path("你的目录路径").glob("*.txt"):
    with open(file, 'r') as f:
        all_content += f.read() + "\n"  # 加换行避免单词被截断

# 用边界匹配确保统计的是完整单词(可选,根据你的需求调整)
total_count = len(re.findall(fr"\b{word}\b", all_content, re.I))
print(f"关键词 '{word}' 总出现次数:{total_count}")

备注:内容来源于stack exchange,提问作者Dez Miller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:00:27