如何从列表中删除基于关键字的行子集? [英] How to delete subsets of lines based on keywords from a list?
本文介绍了如何从列表中删除基于关键字的行子集?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下文件:
This
is
a
testfile
wj5j keyword 1
WFEWF
O%LWJZ keyword 2
which
should
lpokpij keyword 3
123123das
kpmnvf keyword 4
just
contain
the
following
lines.
其中我需要删除关键字1和amp;关键字2之间以及关键字3和关键字4之间的行子集,因此如下所示:
This
is
a
testfile
which
should
just
contain
the
following
lines.
我尝试了下面的方法,它只打印包含关键字的代码行,而不打印其中的那些行。我的想法是,如果我打印了所有行,就可以从文件中删除它们
with open ("newfile_TEST1.txt", mode = "r") as file:
keywords = ['keyword 1', 'keyword 2','keyword 3','keyword 4']
lines = file.readlines()
for lineno, line in enumerate(file,1):
matches = [k for k in keywords if k in line]
if matches:
print(line)
我可以做些什么来改进我的代码?
推荐答案
我会使用从第一次匹配到Netx匹配为止为True的FLAIR。则为FALSE:
with open ("./txt.txt", mode = "r") as file:
keywords = ['keyword 1', 'keyword 2','keyword 3','keyword 4']
lines = file.readlines()
glitch_flair=False
for lineno, line in enumerate(lines,1):
matches = [k for k in keywords if k in line]
if not matches and not glitch_flair:
print(line, end='')
elif matches:
glitch_flair=not glitch_flair
这篇关于如何从列表中删除基于关键字的行子集?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文