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
相关产品推荐
相关产品推荐

