给定一个字符串列表
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+匹配多个单词字符而不是一个。
