En la mayoría (si no es que en todos) los lenguajes de programación existe la función split, cuya forma de trabajar es tomar una cadena y regresar un arreglo de esa cadena separada por tokens.
Si tenemos una cadena como "Hola mundo"
y usamos el espacio " "
como delimitador, al usar split nos devuelve un arreglo o lista que tiene ["Hola", "Mundo"]
. Como delimitador se puede usar cualquier cadena o carácter.
Ahora veamos más ejemplos de split, así como su uso en Python.
Split en Python
La definición oficial es:
cadena.split(separador, [maximoNumeroDeSeparaciones])
Regresa una lista de las palabras en la cadena, usando separador como el delimitador. Si maximoNumeroDeSeparaciones es dada, se hacen al menos maximoNumeroDeSeparaciones separaciones (en donde la lista resultante será de maximoNumeroDeSeparaciones + 1). Si no se especifica o se pone como -1, se regresan todas las separaciones posibles.
Cuidado con el argumento de maximoNumeroDeSeparaciones, porque si lo especificamos regresará una lista con cadenas separadas, pero si alcanza el número de separaciones entonces devuelve lo que sobra (sin separarlo anteriormente). Ya veremos más abajo en los ejemplos.
¿Para qué sirve split en Python?
Para convertir una cadena en una lista, utilizando un separador. También para extraer todas las palabras de una oración, leer datos separados por comas (como CSV, aunque debe haber una mejor manera por ahí) y otras cosas que tengan que ver con separar una cadena.
Split con separador
La forma más básica es como se ve a continuación:
cadena = "Hola mundo"
separador = " "
separado_por_espacios = cadena.split(separador)
print("Separado por espacios es:", separado_por_espacios)
Definimos un separador (que puede consistir de múltiples caracteres) y llamamos a split. Eso devuelve una lista con los elementos.
Usar split en Python con un separador de más caracteres
Split también sirve usando un delimitador de múltiples caracteres. En un ejemplo básico, si tenemos una cadena separada por una palabra y un número, así:
80Edad:1Edad:20Edad:12Edad:44
Podemos usar el separador "Edad:"
para obtener una lista de las edades con este código:
cadena = "80Edad:1Edad:20Edad:12Edad:44"
separador = "Edad:"
separado = cadena.split(separador)
print("Separado por 'Edad:' es:", separado)
# ['80', '1', '20', '12', '44']
Split con máximo número de separaciones
Ahora veamos cómo usar el máximo número de separaciones o el segundo argumento de split. Pongamos esta cadena separada por espacios:
Hola mundo estamos explicando el funcionamiento de split en Python
Si queremos que únicamente devuelva las dos primeras palabras que encuentre, ponemos el máximo a 2 (pero recuerda que devolverá una lista con maximoNumeroDeSeparaciones + 1):
cadena = "Hola mundo estamos explicando el funcionamiento de split en Python"
separador = " "
maximo_numero_de_separaciones = 2
separado_por_espacios = cadena.split(separador, maximo_numero_de_separaciones)
print("Separado por espacios es:", separado_por_espacios)
# ['Hola', 'mundo', 'estamos explicando el funcionamiento de split en Python']
Devuelve una lista de 3, con los dos elementos separados y el resto de la cadena en el último lugar.
Usos de split
Ahora veamos algunos usos que se me ocurren para ver cómo funciona split en Python.
Cuando tenemos un mensaje y decimos que pongan separados por saltos de línea
En algunos casos pedimos al usuario que introduzca datos usando una nueva línea cada uno. Por ejemplo una lista de enlaces o links separados por una línea. Para ello usamos el delimitador \n
.
cadena = """google.com
youtube.com
parzibyte.me"""
separador = "\n"
separado = cadena.split(separador)
print("Separado por espacios es:", separado)
# ['google.com', 'youtube.com', 'parzibyte.me']
Cuando en un correo debemos separar el arroba
Usamos ahora el separador @
. Si queremos únicamente el usuario, tomamos la parte 1. En caso de querer el dominio, tomamos la parte 2:
correo = "contacto@parzibyte.me"
separador = "@"
separado = correo.split(separador)
print("El usuario es {} y el dominio {}".format(separado[0], separado[1]))
# El usuario es contacto y el dominio parzibyte.me
Cuando tenemos una lista separada por comas
También funcionaría para parsear una cadena CSV con Python, pero estoy seguro de que hay una forma más optimizada. El punto es que podemos usar la coma como delimitador, como en los ejemplos anteriores.
Conclusiones
Mira la documentación oficial aquí. También puedes ver cómo separar cadenas con un delimitador en C.