Разделение на первое вхождение
Каким будет лучший способ разделить строку на первое вхождение разделителя?
Например:
"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'