如果给定一个可迭代的单词(数十万个),是否有一个有效的现有库来检查可迭代中的任何单词是否包含在字符串中?
我可以很容易地创建一个很长的正则表达式模式,或者将所有单词放在一起,然后尝试将该正则表达式与我的字符串进行匹配。我主要想知道是否有一些更干净的东西我可以使用,因为我不需要担心转义任何可能出现在单词中的特殊字符。
换句话说,大致是这样的:
words = ['foo', 'bar', 'baz']
finder = WordFinder(words)
finder.find('sdfs s dfs df sdfsdfsdfoo sdf sdf') # True
finder.find('sdfasdfasdfa barasdfs') # True
finder.find('sdfsadsfs f sd fsa f df asdf sd fs') # False
我自己已经写了一个基于正则表达式的类,所以我希望我可以删除这些代码。
发布于 2018-02-22 10:59:59
也许Aho-Corasick可以满足你的要求?
这是维基的页面:https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm
和一个实现它的Python模块:https://pypi.python.org/pypi/pyahocorasick
https://stackoverflow.com/questions/48925535
复制