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

如何用Python读取文本文件生成列表并统计姓名出现次数

代码问题修复方案

现有代码的核心问题

  • 总计数逻辑错误:你定义的count变量仅在with块中执行了1次count = count + 1,所以不管文件里有多少行姓名,输出永远是1,总姓名数直接取拆分后的行列表长度即可。
  • 多余的文件打开操作:开头的f = open("names.txt", "r")没有关闭逻辑,后续已经用with上下文管理器打开文件了,这行可以直接删除。
  • 行内容截取错误:line[14:]会强制截取每行第14位之后的内容,如果你存储姓名的文件每行没有固定14位的前缀内容,会导致截取到空值或者错误内容,直接取整行去空白即可。

修复后代码

from collections import Counter

with open("names.txt", "r", encoding="utf-8") as f:
    # 按行拆分文件内容,过滤空行、去掉每行首尾的空白字符(换行、空格等)
    name_list = [line.strip() for line in f if line.strip()]
    # 统计总姓名数
    total_count = len(name_list)
    # 统计每个姓名的出现次数
    name_counter = Counter(name_list)

print("There are this many names on the list:", total_count)
# 输出所有姓名和对应出现次数
for name, cnt in name_counter.items():
    print(f"{name}: {cnt}次")

补充说明

如果你的names.txt里的姓名不是每行一个,而是用逗号、空格等符号统一分隔的,只需修改拆分逻辑即可,比如逗号分隔的场景可以改成:

from collections import Counter

with open("names.txt", "r", encoding="utf-8") as f:
    content = f.read()
    name_list = [i.strip() for i in content.split(',') if i.strip()]
    total_count = len(name_list)
    name_counter = Counter(name_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:01