Я пытался подсчитать вхождения слов, которые заканчиваются несколькими суффиксами. Я думал, что endswith
примет итерируемый; к сожалению, этого не произошло. Ниже приведен фрагмент кода:TypeError: endswith first arg должен быть str или кортежем str, а не bool
s = 'like go goes likes liked liked liking likes like'
lst = s.split()
suffixes = ['s', 'es', 'ies', 'ed', 'ing']
counter = 0
prompt = 'like'
for x in lst:
if x.startswith(prompt) and x.endswith(any(suffix for suffix in suffixes)):
counter += 1
Значение counter
должно быть 4
в конце исполнения. Это сообщение об ошибке, которое отображается:
TypeError: endswith first arg must be str or a tuple of str, not bool
Как я могу заставить вышеуказанный код работать?
Сообщение об ошибке говорит вам * именно то, что проблема есть. * «Я думал, что это приведет к повторению» *, даже если это так, это не то, что вы передаете **. Попробуйте 'x.endswith (кортеж (суффиксы))'. – jonrsharpe
@jonrsharpe При передаче суффиксов в качестве аргумента он берет первые два элемента и оставляет остальные. Я уже это пробовал. – Mohammed
'[x for x in 'like go go любит понравилось понравилось нравится нравится like..split() если x.startswith (' like ') и x.endswith ((' s ',' es ',' ies ',' ed ',' ing '))] 'дает мне' ['нравится', 'нравится', 'нравится', 'нравится']', что и есть то, что я ожидаю. – jonrsharpe