What would be the best way to split a string on the first occurrence of a delimiter?
"123mango abcd mango kiwi peach"
splitting on the first
mango to get:
"abcd mango kiwi peach"
>>> s = "123mango abcd mango kiwi peach" >>> s.split("mango", 1) ['123', ' abcd mango kiwi peach'] >>> s.split("mango", 1) ' abcd mango kiwi peach'
From the docs:
Return a list of the words in the string, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done (thus, the list will have at most
For me the better approach is that:
…because if happens that occurrence is not in the string you’ll get “
IndexError: list index out of range".
-1 will not get any harm cause number of occurrences is already set to one.
This will split data with the first occurrence of ‘.’ in the string or data frame column value.
You can also use
>>> text = "123mango abcd mango kiwi peach" >>> text.partition("mango") ('123', 'mango', ' abcd mango kiwi peach') >>> text.partition("mango")[-1] ' abcd mango kiwi peach' >>> text.partition("mango")[-1].lstrip() # if whitespace strip-ing is needed 'abcd mango kiwi peach'
The advantage of using
str.partition is that it’s always gonna return a tuple in the form:
(<pre>, <separator>, <post>)
So this makes unpacking the output really flexible as there’s always going to be 3 elements in the resulting tuple.