Skip to main content
 首页 » 编程设计

Python 删除文本行 #1 直到正则表达式

2024年08月26日22zhenyulu

我有一个问题,我似乎无法在 python 中找到解决方案。

从命令行我可以通过以下方式做到这一点: sed '1,/COMMANDS/d'/var/tmp/newFile

这会删除从第 1 行到正则表达式“COMMANDS”的所有内容。简单

但是我不能用我能找到的 Python 做同样的事情。
re.sub 和多行似乎不起作用。

所以我有一个问题,我怎样才能以 Pythonic 的方式做到这一点?除非必须,否则我真的宁愿不从 python 中运行 sed。

请您参考如下方法:

我会使用 fileinput使用 inplace=True 实际更改原始文件,在找到匹配项时设置一个标志并删除行,直到您执行以下操作:

import fileinput 
import re 
found = False 
for line in fileinput.input("your_file",inplace=True): 
    if re.match("pattern",line): 
        found = True 
    if found: 
        print(line,end="") # print line, python2 
    else: 
        print(end="") # print, python2 

如果模式没有什么太复杂的,if "pattern"in line 也可能有效。