0

我正在尝试搜索一个大列表,从我收集的内容来看,使用集合而不是普通列表非常快。我的斗争是使用 if 语句结合正则表达式来查找列表中的字符串。

我尝试了以下方法:

import re
search = re.compile('\[edit\s')

if search in set(list):
   print('found')

我创建了一个包含“[编辑界面]”作为元素的列表,但它似乎没有找到它。

4

2 回答 2

0

我认为这可能是您正在寻找的

search = re.compile('\[edit\s')

l1 =  ["that", '[edit interfaces]', "that"]

for v in set(l1):
   if re.search(search, v):
       print('found ' + v)

您必须检查集合的元素以查看它们是否与正则表达式匹配。您可以通过在 for 循环中进行简单检查来做到这一点。

于 2020-11-06T00:51:58.790 回答
0

我想也许你可以省略将列表更改为一组,而是使用 python 的内置过滤器函数。

import re
search = re.compile('\[edit\s')

l1 =  ["that", '[edit interfaces]', "that"]

res = filter(lambda x : re.search(search, x), l1)

print(list(res))

这种方法避免了遍历列表并使用快速的python内置函数。

于 2020-11-06T01:07:30.310 回答