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

Python字符统计直方图函数读取本地文本文件输出异常如何修正

错误原因

  • 从文件读取的文本包含原字符串测试场景没有的特殊空白字符:换行符\n、缩进用的制表符\t,你原来的letterhelper函数仅移除了普通空格、逗号、句号三类字符,没有过滤这些额外的空白符号,导致统计时出现空白字符对应的条目。
  • 调用charHistogram时传入的文件名是'data',和实际存在的data.txt文件名不匹配,会触发文件找不到的报错。
  • 代码直接用open()打开文件没有手动关闭,存在资源泄漏风险,更推荐用with上下文管理器自动处理文件关闭逻辑。
  • 原逻辑的set.remove()容错性很差,如果文本中不存在要移除的字符(比如某段文本没有逗号),会直接抛出KeyError异常。
  • 最后多输出的None是因为你用print()调用了没有返回值的charHistogram函数,函数默认返回None就会被打印出来。

修复方案

我们把过滤逻辑从「移除指定非目标字符」改成「仅保留小写字母」,逻辑更稳妥也能覆盖所有非字母字符的过滤需求,同时修正文件名和文件读取逻辑:

def letterhelper(content):
    # 只保留a-z字母,自动过滤所有符号、空白字符
    filtered = [c for c in content if c.isalpha()]
    c_r = set(filtered)
    f = []
    for x in c_r:
        f.append([-filtered.count(x), x])
    return f

def charHistogram(file_path: str):
    # 用with上下文管理器自动关闭文件,指定编码避免乱码
    with open(file_path, 'r', encoding='utf-8') as f:
        q = f.read().lower()
    g = letterhelper(q)
    for t in sorted(g):
        print(t[1], (-t[0]) * '+')

# 传入正确的完整文件名,不需要套print
charHistogram('data.txt')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:15:08