Réponses:
De la documentation :
str.split([sep[, maxsplit]])
Renvoie une liste des mots de la chaîne, en utilisant sep comme chaîne de délimitation. Si maxsplit est donné, tout au plus maxsplit est effectué (ainsi, la liste aura au plus des
maxsplit+1
éléments).
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'
Pour moi, la meilleure approche est que:
s.split('mango', 1)[-1]
... car si cela arrive, cette occurrence n'est pas dans la chaîne, vous obtiendrez " IndexError: list index out of range"
.
Par conséquent -1
, aucun dommage ne sera causé, car le nombre d'occurrences est déjà défini sur un.
Vous pouvez également utiliser 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'
L'avantage d'utiliser str.partition
est qu'il va toujours retourner un tuple sous la forme:
(<pre>, <separator>, <post>)
Ainsi, le déballage de la sortie est vraiment flexible car il y aura toujours 3 éléments dans le tuple résultant.
df.columnname[1].split('.', 1)
Cela divisera les données avec la première occurrence de '.' dans la chaîne ou la valeur de colonne du bloc de données.
maxsplit
nombre, le dernier élément de la liste contiendra le reste de la chaîne (y compris tous lessep
caractères / chaînes).