我正在使用Python fuzzywuzzy在句子列表中查找匹配项:

def getMatches(needle):
     return process.extract(needle, bookSentences, scorer=fuzz.token_sort_ratio, limit=3)


我正在尝试打印出比赛及其周围的句子:

for match in matches:
     matchIndex = bookSentences.index(match)
     sentenceIndices = range(matchIndex-2,matchIndex+2)
     for index in sentenceIndices:
         print bookSentences[index],
     print '\n\n'


不幸的是,脚本无法在原始列表中找到匹配项:


  ValueError:(u'Thus,除了上面提到的双重目的外,本书还针对至少两个小组编写:1。',59)不在列表中


有没有更好的方法可以在原始列表中找到匹配项的索引? fuzzywuzzy可以给我一些吗? readme中似乎没有任何内容。

如何获得fuzzywuzzy返回的匹配项的原始列表中的索引?

最佳答案

我有点傻。 fuzzywuzzy返回一个包含分数的元组,而不仅仅是比赛。解决方案:

for match in matches:
     matchIndex = bookSentences.index(match[0])
     sentenceIndices = range(matchIndex-2,matchIndex+2)
     for index in sentenceIndices:
         print bookSentences[index],
     print '\n\n'

10-05 23:17