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

