我有一个多行文本字符串,看起来像:
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'
