【发布时间】:2013-12-25 03:58:34
【问题描述】:
我有一个小模块,可以获取单词的引理及其复数形式。然后它在句子中搜索以查找包含两个单词(单数或复数)的句子。我有它的工作,但我想知道是否有一个更优雅的方式来构建这个表达式。谢谢! 注意:Python2
words = ((cell,), (wolf,wolves))
string1 = "(?:"+"|".join(words[0])+")"
string2 = "(?:"+"|".join(words[1])+")"
pat = ".+".join((string1, string2)) +"|"+ ".+".join((string2, string1))
# Pat output: "(?:cell).+(?:wolf|wolves)|(?:wolf|wolves).+(?:cell)"
然后搜索:
pat = re.compile(pat)
for sentence in sentences:
if len(pat.findall(sentence)) != 0:
print sentence+'\n'
【问题讨论】:
-
性能是个问题吗?还是您只是在寻找代码审查?
-
这个问题似乎是题外话,因为它要求进行代码审查。应该移到codereview.stackoverflow.com
-
性能是主要关注点,是的。
标签: python regex nltk lemmatization