Разделение на первое вхождение

Каким будет лучший способ разделить строку на первое вхождение разделителя?

Например:

"123mango abcd mango kiwi peach"

разделение на первое mango чтобы получить:

"abcd mango kiwi peach"

Ответ 1

Из документов:

str.split([ sep [, maxsplit ]])

Верните список слов в строке, используя sep в качестве строки разделителя. Если задано maxsplit, выполняется максимум maxsplit (таким образом, список будет иметь максимум maxsplit+1 элемент).

s.split('mango', 1)[1]

Ответ 2

>>> s = "123mango abcd mango kiwi peach"
>>> s.split("mango", 1)
['123', ' abcd mango kiwi peach']
>>> s.split("mango", 1)[1]
' abcd mango kiwi peach'

Ответ 3

Для меня лучший подход заключается в том, что:

s.split('mango', 1)[-1]

... потому что, если случается, что вхождение не находится в строке, вы получите IndexError: list index out of range".

Поэтому -1 не получит никакого вреда, причина, по которой количество вхождений уже установлено в один.

Ответ 4

Вот подход itertools:

s = "123mango abcd mango kiwi peach"
"".join(it.islice(it.dropwhile(lambda x: x != " ", s), 1, None))
#'abcd mango kiwi peach'