re.findall对大型数据集的效率问题

时间:2013-07-03 21:54:01

标签: python performance

我正在阅读麻省理工学院开放式课程的算法课程。在一个讲座中提到我们必须小心使用re.findall,因为re通常可以是指数复杂度算法。 在解析大型文件或数据集时这是一个问题吗?是否有正则表达式的替代方法可以有效地从数据中提取模式?

1 个答案:

答案 0 :(得分:1)

取决于你想做什么。

通常,使用执行任务所需的最简单工具。

我想,

in会比正则表达式更有效,但不允许使用通配符,重复等。如果您要查找的模式全部在一行上,则可以在一行上搜索一次,在下一行之前处理每一个(并将其从内存中取出)。如果您正在寻找字符串或结尾的开头,则使用mystring.startswith()mystring.endswith() - 这些效率更高。

您可以将数据拆分为更易于管理的块。

如果你想要多行搜索,它不会在开头或结尾,并包含通配符或重复...你可能会遇到正则表达式。