我想从python中的“XYZ masked 111”或“Hello My Add”等其他句子中搜索并删除包含“masked 111”、“My Add no”等单词的句子。我该如何做? 我试图对下面的代码进行更改,但由于空格的原因无法正常工作
def garbagefin(x):
k = " ".join(re.findall("[a-zA-Z0-9]+", x))
print(k)
t=re.split(r'\s',k)
print(t)
Glist={'masked 111', 'DATA',"My Add no" , 'MASKEDDATA',}
for n, m in enumerate(t): ##to remove entire ID
if m in Glist:
return ''
else:
return x
我期望的结果是:
garbagefin("I am masked 111")-Blank
garbagefin("I am My Add No")-Blank
garbagefin("I am My add")-I am My add
garbagefin("I am My MASKEDDATA")-Blank
如果您只是想从另一个字符串中找到一个字符串,我认为您甚至不需要使用这种混乱的代码。另外,您可以将密钥字符串存储在数组中
您可以简单地使用
in
方法和return
看起来你实际上不需要正则表达式。只是通常的
in
操作符如果匹配不区分大小写,请与小写文本进行比较
输出
您也可以使用如下的正则表达式方法:
见Python demo
glst_rx = r"\b(?:{})\b".format("|".join(Glist))
代码将生成\b(?:My Add no|DATA|MASKEDDATA|masked 111)\b
正则表达式(参见online demo)它将以不区分大小写的方式(注意
re.search(glst_rx, x, re.I)
中的re.I
标志)将Glist
中的字符串作为整字进行匹配,一旦找到,将返回一个空字符串,否则将返回输入字符串如果
Glist
中的项太多,可以利用正则表达式trie(请参见here如何使用trieregex
库生成这样的尝试。)相关问题 更多 >
编程相关推荐