给定一个字符串列表
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+
匹配多个单词字符而不是一个。
关于python - 如何使用 python 删除包含特定模式的列表的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383841/