我得到了一个包含大约10.000个字符串的列表,我想使用正则表达式模式来检测这个列表。当我使用re.compile时,只应用一个正则表达式模式会花费很多时间。Python有什么方法可以让它更快吗?
这里我的代码:
import re
list_of_strings = ["I like to eat meat", "I don't like to eat meat", "I like to eat fish", "I don't like to eat fish"]
outcome = [x for x in list_of_strings if len(re.compile(r"I like to eat (.*?)").findall(x)) != 0]
Out[6]: ['I like to eat meat', 'I like to eat fish']
这里我只使用了4个字符串来演示这个例子。实际上代码应该处理10.000个字符串。
我也可以使用多个处理来解决这个问题,但也许还有另一个解决方案与pytorch,pyspark或其他框架存在。
[编辑]感谢所有的答案。我应该提到,每个字符串都是一篇文章。所以,从regex处理的不仅仅是一句话。
我还想说,这里的正则表达式不是问题所在,所以这不是一个可以讨论的主题。
2条答案
按热度按时间t98cgbkg1#
re.compile
设计为只能使用一次。编译一次,然后使用编译过的更有效的正则表达式。您的示例很好地说明了
re.compile()
的用法,即当您大量使用regex时。093gszye2#
您也可以考虑循环该列表。