Ошибка типа: заканчивается с первым аргументом str или кортежем str, а не bool
Я пытался посчитать вхождения слов, которые заканчиваются несколькими суффиксами. я думал так endswith
примет итеративный; к сожалению, это не так. Ниже приведен фрагмент кода:
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
Как я могу получить приведенный выше код для работы?
1 ответ
Решение
any
функция возвращает значение bool, но str.startswith
требуется строка или кортеж строк.
Вы можете просто преобразовать свой список в кортеж и передать его startswith
:
x.endswith(tuple(suffixes))