如何在文件中查找指定学生ID并删除其所在的整行内容
学生数据行删除实现方案
学生数据存储格式为1234:zakasi:2:1:3,各字段依次为学生ID、姓名、学期、学年、修读课程数,需求为匹配输入的学生ID,删除文件中对应ID的整行数据。
原代码问题点
- 逻辑冗余:不需要遍历拆分后的所有字段,仅需比对第一个字段即可
- 匹配不严谨:使用
in做包含匹配会导致误删,比如输入12会匹配到ID为123的行 - 缺少文件写回逻辑:仅读取了文件内容,没有将处理后的数据写入原文件完成删除操作
- 语法错误:循环内代码缩进错误,且没有手动关闭文件资源
修正后完整代码
# 读取文件内容,with语法会自动关闭文件 with open("students.dat", "r", encoding="utf-8") as infile: all_lines = infile.readlines() target_id = input('enter your id:').strip() reserve_lines = [] for line in all_lines: # 跳过空行 stripped_line = line.strip() if not stripped_line: continue # 取每行第一个字段做精准匹配 current_id = stripped_line.split(":")[0] if current_id != target_id: reserve_lines.append(line) # 将筛选后的数据写回原文件,完成删除逻辑 with open("students.dat", "w", encoding="utf-8") as outfile: outfile.writelines(reserve_lines)
内容的提问来源于stack exchange,提问作者Davey Jones
相关产品推荐
相关产品推荐

