Skip to main content
 首页 » 编程设计

python之如何使用 python 删除包含特定模式的列表的元素

2025年05月04日14dudu

给定一个字符串列表

listA=['a', 'b', 'a@b=c', 'a @ b = c', 'a@ =b', 'a@=b' 'a=b@c', 'a@b' ] 
                   ^         ^ 

我们要去掉标有“^”的元素,得到

ListB=['a', 'b', 'a@ =b', 'a@=b' 'a=b@c', 'a@b'] 

这里我们删除了所有包含“@”的元素,后跟一些字符,然后是“=”,但忽略了“@=”或“@=”

如何为 python 列表做这样的正则表达式匹配?

编辑:

我知道如果我们知道要删除的元素的特定索引,我们可以使用 numpy.delete(list, index) 来删除它。但在这种情况下并非如此。

请您参考如下方法:

可以使用 re 在 python 中进行正则表达式搜索。模块;具体来说,re.search('@\w=', my_string)不会是None如果my_string包含 @和一个 =由\w的成员分开,即一个单词字符(字母数字和 _ )。

我使用 \s 将其扩展到包括也有空格的情况.

import re 
 
listA = ['a', 'b', 'a@b=c', 'a @ b = c', 'a@ =b', 'a@=b' 'a=b@c', 'a@b' ] 
listB = [a for a in listA if not re.search('@\s*\w+\s*=', a)] 

更新:上面的解决方案现在使用 \w+匹配多个单词字符而不是一个。