如何在python中返回一个与搜索到的单词长度相同的单词。例如,我正在寻找[“三”,“茶”,“树”列表中“三”字最接近的匹配,我想返回相同长度字的第一次出现。
我需要使用生成器或一些列表推导来完成它,因为我有一个非常大的数据集。到现在为止我有这个功能:
matches_list= dl.get_close_matches(word.lower(),list_of_words)
if matches_list:
new_word= (w for w in matches_list if (len(word)==len(w)))
print new_word.next()
在第4次或第5次迭代之前打印就好了,我收到此消息错误:
print new_word.next()
StopIteration
答案 0 :(得分:1)
使用next()
function并提供默认值:
new_word = (w for w in matches_list if len(word) == len(w))
print next(new_word, 'nothing found')
引发StopIteration
异常,因为您的生成器在没有(进一步)匹配的情况下到达终点。如果你给next()
函数提供第二个参数,那么它将捕获该异常,并将该第二个参数作为默认值返回。