2015-11-24 2 views
0

Как я могу вернуть в python слово с той же длиной, что и искомое слово. Например, я ищу ближайшее соответствие для слова «три» в списке [«три», «чай», «дерево»], и я хочу вернуть первое появление одного и того же слова длины.Чтение txt-файла в 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-го или пятая итерация, где я получаю эту ошибку сообщения:

print new_word.next() 
StopIteration 
+0

'StopIteration' означает, что вы достигли последнего элемента в вашем генераторе –

ответ

1

Используйте next() function и поставку по умолчанию:

new_word = (w for w in matches_list if len(word) == len(w)) 
print next(new_word, 'nothing found') 

Исключение составляет StopIteration, потому что ваш генератор достиг цели без (дополнительного) совпадения. Если вы дадите второй аргумент функции next(), тогда он поймает это исключение и вернет этот второй аргумент вместо него.

Смежные вопросы