Согласно Python documentation:Я нашел ошибку в str.endswith() Python?
str.endswith (суффикс [, начало [, конец]])
Возвращает True, если строка заканчивается указанным суффиксом, в противном случае возвращает значение False. суффикс также может быть кортежем суффиксов для поиска. С дополнительным запуском начните тестирование с этой позиции. Withoptional end, прекратите сравнивать в этом положении.
Изменено в версии 2.5: Принимать кортежи как суффикс.
Следующий код должен возвращать True
, но он возвращает False
в Python 2.7.3:
"hello-".endswith(('.', ',', ':', ';', '-' '?', '!'))
кажется str.endswith()
игнорирует все дальше вперед кортеж элемента:
>>> "hello-".endswith(('.', ',', ':', '-', ';' '?', '!'))
>>> True
>>> "hello;".endswith(('.', ',', ':', '-', ';' '?', '!'))
>>> False
Have I нашел ошибку, или я что-то упустил?
Объяснение повторной конкатенации неявных строк! – user2357112
@ user2357112: да, это была опасность, когда мы добавили его на C, и он все еще кусает людей даже на этих более новых языках. :-) – torek