Python文件字符串替换异常:重复写入问题排查与修复
解决文本替换重复写入及替换失效问题
先看你代码里的几个核心问题:
- 每次循环都用原始的
text变量做替换,而非基于上一次替换后的结果,导致每次仅修改单个词,还把这些单独修改的版本都追加写入文件,最终文件堆了一堆重复内容。 - 用
r+模式打开文件时,读完内容后文件指针停在末尾,直接write会把新内容追加在原文件后面,而非覆盖原有内容。
修正后的代码逻辑:先读取原始文本,循环替换时累积修改结果,最后把最终的完整文本写入文件(写入前清空原文件内容)。
修正后的代码:
import re with open("text.txt", "r+") as f: # 读取原始文本 text = f.read() matches = re.findall(r"ADJECTIVE|NOUN|VERB", text) # 用变量保存累积替换后的结果 updated_text = text for word_type in matches: replacement = input(f"What would you like to replace the {word_type} with: ") # 基于上一次替换后的文本继续替换 updated_text = updated_text.replace(word_type, replacement, 1) # 移动文件指针到开头,清空原文件内容 f.seek(0) f.truncate() # 写入最终的替换结果 f.write(updated_text)
验证效果:
读取原始文本后,依次用用户输入的panda替换第一个ADJECTIVE,forest替换第一个NOUN,ate替换VERB,cat替换第二个NOUN,累积得到正确文本;seek(0)把指针移到文件开头,truncate()清空原内容,再写入新文本,就不会出现追加重复的问题了。
内容的提问来源于stack exchange,提问作者Abdulmoty
相关产品推荐
相关产品推荐

