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

Python文件操作求助:实现学生信息写入与名字提取功能

问题分析与修正方案

你的代码核心问题在于处理文件读取结果的方式有误,导致依赖脆弱的索引取值,同时可以优化文件操作的写法。

原代码的问题点

  • 把readlines()返回的列表直接转成字符串,会把列表的语法符号(如[]、'')也混入内容中,分割后得到的列表包含大量无效元素,比如"['karamitsos"、"\n',"这类。
  • 用固定索引l3[1]、l3[4]取值完全依赖当前的字符串格式,一旦文件内容有变化(比如新增一行、姓名格式调整)就会出错。

修正后的代码

推荐使用with语句管理文件,它会自动帮你关闭文件句柄,避免手动close()可能出现的遗漏:

1. 写入文件部分

# 将姓名写入class.txt,每行一个
with open('class.txt', 'w') as f:
    # 定义姓名列表,匹配要求的首字母大写格式
    student_names = ['Karamitsos Giorgos', 'Patapoukas Dimitris']
    for name in student_names:
        f.write(f"{name}\n")

2. 读取并打印名字部分

# 读取文件,仅打印每个姓名的名字部分
with open('class.txt', 'r') as f:
    for line in f:
        # 去掉行尾的换行符和两端空白字符
        cleaned_line = line.strip()
        # 按空格分割姓和名,假设姓名都是"姓 名"的格式
        last_name, first_name = cleaned_line.split()
        print(first_name)

运行结果

执行后会输出:

Giorgos
Dimitris

补充说明

如果姓名中可能包含空格(比如复姓),可以调整分割逻辑,取最后一个空格后的部分作为名字,兼容性更强:

first_name = cleaned_line.split()[-1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:50:26