¿Cuál sería la mejor manera de dividir una cadena en la primera aparición de un delimitador?
Por ejemplo:
"123mango abcd mango kiwi peach"
dividiéndose en el primero mango
para obtener:
"abcd mango kiwi peach"
De los documentos :
str.split([sep[, maxsplit]])
Devuelve una lista de las palabras en la cadena, usando sep como la cadena delimitadora. Si se da maxsplit , como máximo se realizan divisiones maxsplit (por lo tanto, la lista tendrá como máximo
maxsplit+1
elementos).
s.split('mango', 1)[1]
maxsplit
recuento, el último elemento de la lista contendrá el resto de la cadena (incluidos lossep
caracteres / cadenas).fuente
Para mí, el mejor enfoque es que:
... porque si sucede que la ocurrencia no está en la cadena que obtendrás "
IndexError: list index out of range"
.Por
-1
lo tanto , no obtendrá ningún daño porque el número de ocurrencias ya está establecido en uno.fuente
También puedes usar
str.partition
:La ventaja de usar
str.partition
es que siempre devolverá una tupla en la forma:Esto hace que desempaquetar la salida sea realmente flexible ya que siempre habrá 3 elementos en la tupla resultante.
fuente
Esto dividirá los datos con la primera aparición de '.' en la cadena o el valor de la columna del marco de datos.
fuente