为什么不使用re
?
[我正在寻找一个将获得单词列表的Python包,然后根据提供给它的单词列表在文本内搜索单词。
我尝试使用FlashText(http://flashtext.readthedocs.io/en/latest/)
所以我建立了一个从文件code: keyword_processor.add_keyword(word)
添加关键字的类
并且比使用code: keyword_processor.extract_keywords(text)
在文本中搜索关键字>
但是我也得到了部分单词,例如,我有一个“关键字”(希伯来语::יל]]
和一个句子:האישהבגילההלכהלפארק
单词“בגילה”作为发现的关键词出现,因为其中包含גיל,所以对我不利。...>
这里的人有没有使用过与我在此描述的内容相同的Python软件包的经验,并且不会返回“部分关键字”?也许和flashtext一样快,从我参加的测试中来看,速度非常快。
我正在寻找一个Python程序包,该程序包将获取单词列表,然后根据提供给它的单词列表在文本内搜索单词。我尝试使用FlashText(http://flashtext.readthedocs ....
为什么不使用re
?
re
将返回
import re s = 'asef se fese fes fse se' words = ['se', 'fes', 'foo'] words_re = '(?:^|\s+)({})(?:$|\s+)'.format('|'.join(words)) re.findall(words_re, s)
即
['se', 'fes', 'se']
中找到的words
中的单词,顺序是找到它们的顺序,包括重复项。Regex含义:
s
(?:^|\s+)
(?:$|\s+)
之前或之后的内容>(?:...)
是“ OR”:我们需要以下单词之一:|
'|'.join(words)
随意在单词之前或之后添加更多可接受的字符(我在考虑({})
,,
,...)。
或者,如果您正在寻找文本中的单词,那么查找者将要返回的是您已经拥有的单词。如果您这样做的原因是要检查单词是否在文本中,则可以使用.
:
in
为什么不使用re
?