如何用Python结合fileinput库基于上一行条件删除文本行?
使用fileinput库实现删除目标行下一行的方案
核心思路是记录上一行的状态,遍历文件时判断是否需要跳过当前行:
- 初始化一个标记变量(比如
skip_next),用来标记下一行是否需要跳过 - 遍历每一行时:
- 如果标记为
True,就跳过当前行,同时把标记重置为False - 如果标记为
False,先输出当前行,再检查当前行是否包含目标字符串(比如"grapes"),如果包含就把标记设为True
- 如果标记为
完整代码示例
import fileinput # 目标字符串 TARGET = "grapes" # 需要处理的文件路径 FILE_PATH = "your_file.txt" skip_next = False # 使用fileinput的inplace参数直接修改原文件 for line in fileinput.input(FILE_PATH, inplace=True): # 注意保留原行的换行符,rstrip避免重复添加 line = line.rstrip('\n') if skip_next: skip_next = False continue print(line) if TARGET in line: skip_next = True
关键说明
fileinput.input(inplace=True)会直接修改原文件,处理时建议先备份文件rstrip('\n')是为了避免print自动添加的换行符和原行的换行符重复,导致输出空行- 标记变量
skip_next的状态切换是核心:当检测到目标行时,告诉下一次循环跳过当前行
测试验证
原文件内容:
I enjoy eating grapes.
Sometimes I apples are good too.
But I do not line bananas.
运行代码后,文件内容会变为:
I enjoy eating grapes.
But I do not line bananas.
内容的提问来源于stack exchange,提问作者Timothy Pierce
相关产品推荐
相关产品推荐

