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

基于词表统计文本文件词频遇问题:代码无结果求助排查

代码问题排查与修正

问题原因

  • 文本拆分逻辑错误:你用re.findall('\w+', ...)将文本拆分为单个单词,但目标词表包含virtual currency这类多词短语,拆分后的单个单词无法与短语匹配,导致没有结果。
  • 计数语法错误:counter[i]= +1的写法无法实现累计计数,即便匹配到目标词,每次也只会将值设为1,且初始空字典直接赋值可能引发键不存在的问题。

修正后的代码

import re
from collections import defaultdict

counter = defaultdict(int)
path = r'C:\test\QTR2\712515\0000712515-17-000035.txt'
# 修正了词表中"Etherrum"的拼写错误(如果是输入笔误)
target_terms = ['virtual currency','virtual currencies','Bitcoin','Litecoin','dogecoin','Ethereum']

# 安全读取文件并转为小写
with open(path, 'r', encoding='utf-8') as f:
    doc_content = f.read().lower()

# 遍历每个目标短语,统计出现次数
for term in target_terms:
    # 用正则匹配完整短语,避免部分匹配
    match_count = len(re.findall(r'\b' + re.escape(term) + r'\b', doc_content))
    counter[term] += match_count

# 输出统计结果
print(dict(counter))

改进说明

  • 使用with语句读取文件,确保文件资源自动释放,避免资源泄漏。
  • 直接在完整文本中匹配目标短语,\b用于匹配词边界,避免把类似"virtual currencyabc"的内容误判为匹配;re.escape处理短语中的特殊字符,避免正则语法冲突。
  • 用defaultdict(int)简化计数逻辑,无需手动判断键是否存在。
  • 修正了词表中可能的拼写错误(将"Etherrum"改为常见的"Ethereum",如果是输入时的笔误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:31:01