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

如何用Python统计TXT文件中各首字母开头的名称数量

统计文本文件中各字母开头名称的数量

你的核心需求是统计bin-nombres.txt文件里,以A-Z(不区分大小写)每个字母开头的名称数量,同时算出总名称数。咱们先梳理下初始代码里的问题,再给出能实现需求的解决方案:

初始代码的问题点

  • counterByLetter函数逻辑偏差:它是把传入的单个字符和a-z字母做匹配计数,而非累计整个文件里每个字母开头的总数量
  • 文件处理时变量名重复(lines = [lines.strip() for lines in fp]),容易造成逻辑混淆
  • 每次循环调用counterByLetter都会生成全新字典,完全没实现累计计数的核心目标

修正后的完整解决方案

import string

def main():
    try:
        # 初始化字母计数字典,每个小写字母初始计数为0
        letter_count = {letter: 0 for letter in list(string.ascii_lowercase)}
        with open("bin-nombres.txt", 'r') as fp:
            for line in fp:
                line = line.strip()
                # 取每行第一个字符并转为小写,统一大小写规则
                initial = line[0].lower()
                letter_count[initial] += 1
        # 遍历字典输出结果,同时统计总名称数
        total_names = 0
        for key, value in letter_count.items():
            total_names += value
            print("Names that start with the letter '{}' have {} entries.".format(key.upper(), value))
        print("Total names in the file: {}".format(total_names))
    except EOFError as e:
        print(f"Error reading file: {e}")

if __name__ == "__main__":
    main()

代码关键逻辑说明

  • 用string.ascii_lowercase快速生成完整小写字母列表,避免手动输入a-z的繁琐,同时初始化每个字母计数为0
  • 逐行读取文件,先去除每行首尾空白(比如换行符、空格),再把首字符转小写,确保大小写开头的名称能统一统计
  • 遍历字典时将字母转为大写输出(更符合日常阅读习惯),同时累加所有计数得到总名称数
  • 优化了异常提示信息,让错误反馈更清晰

运行后你会得到类似这样的输出:

Names that start with the letter 'A' have 3 entries.
Names that start with the letter 'B' have 20 entries.
...
Total names in the file: 127

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:38:22