Python实现逐行读取文本移除'the'单词写入新文件及代码纠错
功能需求
编写程序逐行读取文本文件,移除文件中所有独立的the单词,再将处理后的内容写入新文件。
原代码核心错误
- 语法错误:
f2.close()、f1.close()两行缩进不匹配Python语法要求,运行会直接触发缩进报错 - 字符串拆分逻辑无效:
x.split()执行后没有将返回值赋值给变量,x始终是读取到的完整字符串,没有被拆分为单词列表 - 遍历对象错误:
for i in x遍历字符串时,每次循环取到的是单个字符,而非单词,判断'the' not in i永远成立,根本不会过滤任何内容 - 匹配逻辑缺陷:就算拆分单词成功,直接用
'the' not in i判断也会误删there、theory这类包含the字符片段的其他单词,不符合“仅移除the单词”的要求 - 打印逻辑错误:
print(f2)打印的是文件对象的内存地址,不是文件内容,无法查看处理结果 - 冗余无效代码:函数末尾打开
Result.txt调用read()后既没有保存内容也没有打印、关闭文件,属于无效操作;手动调用close()的写法如果中途程序报错,会导致文件无法正常关闭,存在资源泄漏风险
正确实现代码
import re def remove_the_word(): # 上下文管理器自动处理文件关闭,无需手动调用close with open("Sample.txt", "r", encoding="utf-8") as source_file, open("Result.txt", "w", encoding="utf-8") as target_file: # 逐行读取源文件,大文件场景下内存占用更低 for line in source_file: # 匹配独立的the单词,\b为单词边界,避免误删含the片段的其他词汇 processed_line = re.sub(r"\bthe\b", "", line) # 清理移除the后留下的多余连续空格 processed_line = re.sub(r"\s+", " ", processed_line).strip() # 写入新文件,保留原文件的换行结构 target_file.write(processed_line + "\n") # 读取处理后的文件打印验证 with open("Result.txt", "r", encoding="utf-8") as res_file: print("处理后文件内容:") print(res_file.read()) if __name__ == "__main__": remove_the_word()
代码说明
- 采用
with上下文管理器操作文件,无论程序是否中途报错,都会自动释放文件资源,避免资源泄漏 - 逐行遍历源文件,完全符合逐行读取的需求,处理大文件时不会一次性加载全量内容到内存
- 正则单词边界匹配可以精准识别独立的
the单词,支持匹配带前后标点的场景(比如the.、the,、the!),不会误删其他同片段词汇 - 额外做了空格清理,避免移除单词后句子出现连续多余空白
- 结果验证环节直接读取文件内容打印,可以直观看到处理效果
内容的提问来源于stack exchange,提问作者Mathew
相关产品推荐
相关产品推荐

