Odpowiedzi:
Z dokumentów :
str.split([sep[, maxsplit]])
Zwraca listę słów w ciągu, używając sep jako ciągu ogranicznika. Jeśli maxsplit podana jest co najwyżej maxsplit podziały są zrobione (a więc lista będzie mieć co najwyżej
maxsplit+1
elementów).
s.split('mango', 1)[1]
>>> s = "123mango abcd mango kiwi peach"
>>> s.split("mango", 1)
['123', ' abcd mango kiwi peach']
>>> s.split("mango", 1)[1]
' abcd mango kiwi peach'
Dla mnie lepsze podejście jest takie:
s.split('mango', 1)[-1]
... bo jeśli tak się stanie, to wystąpienie nie jest w ciągu, dostaniesz " IndexError: list index out of range"
.
Dlatego -1
nie odniesie żadnej szkody, ponieważ liczba wystąpień jest już ustawiona na jeden.
Możesz także użyć str.partition
:
>>> 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'
Zaletą użycia str.partition
jest to, że zawsze zwróci krotkę w postaci:
(<pre>, <separator>, <post>)
Dzięki temu rozpakowywanie danych wyjściowych jest naprawdę elastyczne, ponieważ w wynikowej krotce zawsze będą 3 elementy.
df.columnname[1].split('.', 1)
Spowoduje to podzielenie danych przy pierwszym wystąpieniu „.” w wartości kolumny ciągu lub ramki danych.
maxsplit
liczby można wykonać więcej podziałów , ostatni element na liście będzie zawierał resztę ciągu (łącznie z dowolnymisep
znakami / ciągami znaków).