这是我的代码的简单版本。在
for i in range(len(holdList)):
foundTerm = re.findall(r"\b" + self._searchTerm +
r"\b", holdList[i][5], flags=re.IGNORECASE)
# count the occurrence
storyLen = len(foundTerm)
holdList[i] += (storyLen,)
if foundTerm:
# Stores each found word as a list of strings
# etc
holdList[i] += (self.sentences_to_quote(holdList[i][5]), )
在循环过程中(最后一行),我调用一个不同的方法来查看每个句子,它返回包含单词的句子。holdList是来自MySQL查询的元组。在
^{pr2}$我该怎么做才能加快速度?我能做些什么吗?程序正在处理10MB的文本。通过分析,我发现这两个方面是瓶颈。我希望我提供了足够的信息来说明这一点。在
在re.sub公司用于替换与正则表达式匹配的字符串。 这里的任务只是查找匹配项是否存在,因此使用搜索会给予 你的表现很好,搜索给你第一场比赛。在
我不确定您的
self._searchTerm
是否由短语或单词组成,但一般来说,使用set
s和dict
s而不是regex会得到更好的结果。在这种情况下,您不需要regex机制,因为您只需要计数/匹配完整的单词。例如,要搜索句子中的某个单词,可以用以下方法轻松替换:(我使您的代码PEP8兼容。)
如果您担心大写,请将所有内容转换为小写:
^{pr2}$您还可以使用
collection.Counter
或collection.defaultdict(int)
来计算单词的出现次数。在如果您必须使用正则表达式,因为您希望匹配遵循特定模式的单词,而不是匹配整个单词,那么我建议您编译该模式一次,然后将该模式传递给其他方法,例如
相关问题 更多 >
编程相关推荐