Для забавы используйте метод строки partition
в Python 3. Он ищет строку для подстроки и возвращает 3-кортеж.Когда есть совпадение, это
(строка перед совпадением, совпадение, строка после совпадения)
Как только вы к этому привыкли, это очень приятно -индексирование не требуется, и это позволяет легко получить правильные результаты.Таким образом, хотя этот код длиннее некоторых других способов, вы легко сможете рассуждать об этом:
def findallprefix(s, sep):
sofar = ""
while True:
head, matched, s = s.partition(sep)
if matched:
assert matched == sep
sofar += head
yield sofar
sofar += matched
else:
break
s = "I like lettuce and carrots and onions and dressing."
for match in findallprefix(s, " and"):
print(repr(match))
, который печатает
'I like lettuce'
'I like lettuce and carrots'
'I like lettuce and carrots and onions'