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

Python实现读取文本文件 分姓名、出生日期两栏格式化输出

原代码存在几个不符合需求和不规范的点:

  • 打开文件用了r+读写权限,当前场景只需要读文件,这个权限多余;且没有做文件关闭处理,容易残留文件句柄
  • 姓名部分没有做首字母截取的格式化,当前直接输出完整名字,不符合「名字首字母+姓氏」的要求
  • 写循环时迭代变量和存储列表重名(遍历姓名列表时迭代变量也叫name,遍历出生日期时迭代变量也叫birthdate),会覆盖原列表变量,属于容易出问题的不规范写法
  • 输出时额外加了从0开始的数字序号,需求里没有要求输出序号
  • 没有做空行判断,如果DOB.txt里有空行会直接触发索引报错
修正后的代码
name_list = []
birthdate_list = []

# 用上下文管理器打开文件,自动处理关闭,只读模式即可
with open("DOB.txt", "r", encoding="utf-8") as f:
    for line in f:
        content = line.strip()
        # 跳过空行避免报错
        if not content:
            continue
        parts = content.split()
        # 取名字首字母,和姓氏拼接
        formatted_name = f"{parts[0][0].upper()} {parts[1]}"
        name_list.append(formatted_name)
        # 拼接出生日期的三个部分(日、月、年)
        birthdate_list.append(" ".join(parts[2:]))

# 按要求分区块输出
print("Name")
for name in name_list:
    print(name)

print("\nBirthdate")
for birthdate in birthdate_list:
    print(birthdate)
逻辑说明
  • 姓名格式化时统一把首字母转成大写,避免源文件里名字首字母小写导致输出不符合要求
  • 打开文件时显式指定utf-8编码,兼容不同系统的文件编码,避免乱码
  • 两个区块之间加了空行,输出排版更清晰,如果不需要可以去掉print("\nBirthdate")里的换行符
  • 逐行读取时先去掉首尾的空白字符、跳过空行,避免源文件格式不规整导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.07 16:15:42