Skip to main content
 首页 » 编程设计

python之从python中的多行字符串中删除模式匹配行

2025年05月04日20虾米姐

我有一个多行文本字符串,看起来像:

AAAA BBBBBB 
BBBB VVVV XXXX 
 
CCCCCCCC XXXX 

我想想出一个小函数,如果它包含一个词/短语,它会删除整行,所以对于上面的内容,如果我让说以“VVV”作为参数发送,输出将是:

AAAA BBBBBB 
 
CCCCCCCC XXXX 

stackoverflow上有很多例子,eg Remove lines that contain certain string ,它显示了如何对文件执行此操作,但我不确定如何不打开文件。

请您参考如下方法:

你可以使用re.sub:

>>> import re 
>>> my_string 
'AAAA BBBBBB\nBBBB VVVV XXXX\n\nCCCCCCCC XXXX' 
>>> re.sub(".*VVV.*\n?","",my_string) 
'AAAA BBBBBB\n\nCCCCCCCC XXXX' 

你可以定义一个函数并且可以为任何子字符串做:

>>> def remove(rem,my_string): 
...     return re.sub(".*"+rem+".*\n?","",my_string) 
...  
>>> remove("VVV",my_string) 
'AAAA BBBBBB\n\nCCCCCCCC XXXX' 
>>> remove("XXX",my_string) 
'AAAA BBBBBB\n\n' 
>>> remove("BBB",my_string) 
'\nCCCCCCCC XXXX' 
>>> remove("CCCC",my_string) 
'AAAA BBBBBB\nBBBB VVVV XXXX\n\n'