我正在尝试搜索一个大列表,从我收集的内容来看,使用集合而不是普通列表非常快。我的斗争是使用 if 语句结合正则表达式来查找列表中的字符串。
我尝试了以下方法:
import re
search = re.compile('\[edit\s')
if search in set(list):
print('found')
我创建了一个包含“[编辑界面]”作为元素的列表,但它似乎没有找到它。
我正在尝试搜索一个大列表,从我收集的内容来看,使用集合而不是普通列表非常快。我的斗争是使用 if 语句结合正则表达式来查找列表中的字符串。
我尝试了以下方法:
import re
search = re.compile('\[edit\s')
if search in set(list):
print('found')
我创建了一个包含“[编辑界面]”作为元素的列表,但它似乎没有找到它。
我认为这可能是您正在寻找的
search = re.compile('\[edit\s')
l1 = ["that", '[edit interfaces]', "that"]
for v in set(l1):
if re.search(search, v):
print('found ' + v)
您必须检查集合的元素以查看它们是否与正则表达式匹配。您可以通过在 for 循环中进行简单检查来做到这一点。
我想也许你可以省略将列表更改为一组,而是使用 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内置函数。