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

Python如何根据指定ID删除txt文件内匹配的整行数据

按ID删除TXT文件对应行的实现方案

核心思路是读取文件时不要直接修改原文件,先把所有不需要删除的行收集到新列表,最后统一覆盖写回原文件,避免读写冲突或者遍历列表时动态删元素导致的索引错位问题。


现有代码的补全思路

你已经完成了文件读取、ID匹配的核心逻辑,后续不需要在匹配到对应行的时候做删除操作,只要反向收集所有ID不匹配的行即可:

  • 先定义好你要操作的txt文件实际路径,替换掉原代码里未定义的txt变量
  • 新建空列表存储所有需要保留的行
  • 逐行判断:如果当前行的ID和用户输入不一致,就把这行加入保留列表
  • 遍历完成后,用写入模式打开原文件,把保留列表里的所有内容写回,就自动删掉了所有匹配ID的行

完整可运行代码

# 替换成你自己的txt文件实际存储路径
file_path = "user_info.txt"
# 加strip()清除用户输入不小心带的前后空格、换行符
user_input = input("Please enter the id: ").strip()

# 读取文件所有行
with open(file_path, "r", encoding="utf-8") as f:
    all_lines = f.readlines()

keep_lines = []
for line in all_lines:
    # 跳过文件里的空行,避免split取索引时报错
    if not line.strip():
        continue
    # 同样给拆分出的ID加strip,清除前后可能存在的空白字符
    current_id = line.split("---")[0].strip()
    if current_id != user_input:
        keep_lines.append(line)

# 用写入模式打开文件,会自动清空原文件旧内容,写入保留的行
with open(file_path, "w", encoding="utf-8") as f:
    f.writelines(keep_lines)

效果说明

如果你输入ID123456,执行完代码后,原文件里4个ID为123456的行都会被删除,剩余内容为:

id---username---password---email 
123456465---student---password---student@gmail.com 
51654645686---student---password---student@gmail.com 
1561654646--student---password---student@gmail.com 

注意:你提供的示例文件里1561654646--student这行的ID和用户名之间只有2个横杠,拆分后ID字段会包含后面的分隔符和用户名内容,不会和你输入的纯数字ID匹配,会被正常保留。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:09:44