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

如何用Python删除TXT文件中的字符串?代码问题求助

问题分析与修复方案

你的代码里有几个明显问题导致删除功能失效:

  • readlines()返回的是列表,列表没有replace方法,执行时会直接报错
  • 用"a"模式打开文件是追加内容,不是覆盖原有内容,就算处理完内容,也只是加在文件末尾,不会删除原有行
  • 判断what_you_want_remove in contact_info大概率不生效,因为readlines()读取的每行都带有换行符\n,比如你输入的号码是12345,但文件里的行是12345\n,两者不相等

首先明确:没有直接删除文本文件中特定内容的系统级方法。因为文本文件是流式存储的,要删除指定内容,只能先读取全部内容,过滤掉不需要的部分,再重新写入覆盖原文件——这是处理这类需求的标准做法。

下面是修正后的删除功能代码:

what_you_want = input("Do you want to add or remove (if add write add), (if remove write remove): ")

if what_you_want == "remove":
    target_num = input("What contact number you want to remove: ")
    # 读取文件所有行
    with open("All Contact.txt", "r") as f:
        lines = f.readlines()
    
    # 过滤掉匹配目标号码的行(strip()去除换行符和空白,确保匹配准确)
    new_lines = [line for line in lines if line.strip() != target_num]
    
    # 用w模式打开文件,覆盖原有内容
    with open("All Contact.txt", "w") as f:
        f.writelines(new_lines)

关键说明:

  • "w"模式打开文件时,会自动清空原有内容,然后写入新的内容,这就是实现“删除”效果的核心
  • strip()方法用来去除每行首尾的空白字符(包括换行符),避免因为换行符导致的匹配失败
  • 如果你的联系人存储格式是更复杂的样式(比如张三:138xxxx1234),可以调整过滤逻辑,比如只匹配行尾的号码:
    new_lines = [line for line in lines if not line.strip().split(":")[-1] == target_num]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:31:09