我有一个多行文本字符串,如下所示:
AAAA BBBBBB
BBBB VVVV XXXX
CCCCCCCC XXXX
我想提出一个小函数,如果它包含一个单词/短语就删除整行,所以如果我说让'VVV'作为一个paremeter发送,输出将是:
AAAA BBBBBB
CCCCCCCC XXXX
stackoverflow上有很多例子,例如Remove lines that contain certain string,它们展示了如何为文件执行此操作,但我不确定如何不打开文件。
答案 0 :(得分:4)
您可以使用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'
答案 1 :(得分:1)
inp = "AAAA BBBBBB\nBBBB VVVV XXXX\n\nCCCCCCCC XXXX"
ans = ""
pattern = "VVVV"
for line in inp.split("\n"):
if line.find(pattern)<0:
ans=ans + line+"\n"
print ans
答案 2 :(得分:1)
>>> text = '''AAAA BBBBBB
BBBB VVVV XXXX
CCCCCCCC XXXX'''
>>> text = '\n'.join(line for line in text.split('\n') if 'VVV' not in line)
>>> print text
AAAA BBBBBB
CCCCCCCC XXXX