Risposte:
Dai documenti :
str.split([sep[, maxsplit]])Restituisce un elenco delle parole nella stringa, usando sep come stringa del delimitatore. Se maxsplit è dato, nella maggior parte maxsplit divisioni sono fatte (così, la lista avrà al massimo
maxsplit+1gli elementi).
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'
Per me l'approccio migliore è che:
s.split('mango', 1)[-1]
... perché se accade che l'occorrenza non è nella stringa otterrai "IndexError: list index out of range" .
Pertanto -1non si ottiene alcun danno perché il numero di occorrenze è già impostato su uno.
Puoi anche usare 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'
Il vantaggio dell'uso str.partitionè che restituirà sempre una tupla nella forma:
(<pre>, <separator>, <post>)
Quindi, questo rende l'estrazione, l'uscita molto flessibile come c'è sempre sarà 3 elementi della tupla risultante.
df.columnname[1].split('.', 1)
Questo dividerà i dati con la prima occorrenza di '.' nel valore della colonna stringa o frame di dati.
maxsplitconteggio, l'ultimo elemento nell'elenco conterrà il resto della stringa (inclusivo di eventualisepcaratteri / stringhe).