Cómo usar el método split() en Python

En este tutorial, aprenderá a usar el método split() de Python para dividir una cadena en una lista de cadenas.

Cuando trabaje con cadenas de Python, puede usar varios métodos de cadenas integrados para obtener copias modificadas de cadenas, como convertir a mayúsculas, ordenar una cadena y más. Uno de esos métodos es .split() que divide una cadena de Python en una lista de cadenas, y aprenderemos más sobre esto mediante ejemplos de codificación.

Al final del tutorial, habrá aprendido lo siguiente:

  • cómo funciona el método .split()
  • cómo personalizar la división usando los parámetros sep y maxsplit

¡Vamos a empezar!

Sintaxis del método split() en Python

Esta es la sintaxis general para usar el método split() de Python en cualquier cadena válida:

string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

Aquí, la cadena puede ser cualquier cadena Python válida.

Los parámetros sep y maxsplit son opcionales.

  • sep denota el separador en el que le gustaría dividir la cadena. Debe especificarse como una cadena.
  • maxsplit es un número entero que especifica cuántas veces desea dividir la cadena.

Sus valores predeterminados se utilizan cuando no proporciona parámetros opcionales.

  • Cuando no proporciona el valor de separación de forma explícita, se utilizan espacios en blanco como separador predeterminado.
  • Cuando no especifica el valor de maxsplit, el valor predeterminado es -1, lo que significa que la cadena se dividirá en todas las apariciones del separador.

Expresando la sintaxis en lenguaje sencillo:

El método split() divide una cadena maxsplit el número de veces que aparece el separador especificado por el parámetro sep.

Ahora que hemos aprendido la sintaxis del método split() de Python, procedamos a codificar algunos ejemplos.

Dividir una cadena de Python en una lista de cadenas

Si usted tiene Pitón 3 instalado en su máquina, puede codificar con este tutorial ejecutando los siguientes fragmentos de código en un REPL de Python.

Para iniciar REPL, ejecute uno de los siguientes comandos desde la terminal:

$ python
$ python -i

▶️ También puede probar estos ejemplos en el editor Python de kirukiru.es.

En este ejemplo, py_str es una cadena de Python. Llamemos al método .split() en py_str sin ningún parámetro y observemos el resultado.

py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

Como se ve arriba, la cadena se divide en todas las apariciones de espacios en blanco.

Dividir una cadena de Python en la aparición de separadores

#1. Como primer ejemplo, dividamos la cadena py_str con guiones bajos dobles (__) como separador.

py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

#2. Tomemos otro ejemplo. Aquí, py_str tiene tres oraciones, cada una terminada por un punto (.).

py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ Cuando llamamos al método .split() en esta cadena, con ‘.’ como separador, la lista resultante tiene tres oraciones, como se ve en la celda de código anterior.

#3. Hagamos algunas preguntas:

  • ¿Qué sucede cuando el separador nunca aparece en la cadena?
  • ¿Cómo ocurrirá la división en este caso?

Aquí hay un ejemplo:

Intentamos dividir py_str en la aparición de asterisco

py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

—lo cual no ocurre.

Como no se puede dividir en este caso, la lista resultante contiene la cadena completa.

En la siguiente sección, veremos cómo podemos usar el método split() en el contenido de un archivo de texto.

Dividir el contenido de un archivo de Python

Cuando trabaje con archivos de texto en Python, es posible que deba dividir el contenido del archivo, según un separador, para facilitar el procesamiento.

Aquí hay un archivo de texto de muestra:

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

El fragmento de código a continuación muestra cómo usar la división en el contenido del archivo de texto de muestra.

  • El código anterior hace lo siguiente:
  • Utiliza el administrador de contexto with para abrir y trabajar con el archivo de texto ‘sample.txt’.
  • Lee el contenido del archivo usando el método .read() en el objeto del archivo f.
  • Divide el contenido en la aparición de los puntos suspensivos del separador (…) en una lista str_list.

Recorre str_list para acceder a cada cadena y la imprime.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://kirukiru.es.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

Aquí está la salida.

Como ejercicio, puede intentar dividir el contenido de un archivo de texto en cualquier separador de su elección.

Dividir una cadena de Python en trozos

Cuando divide una cadena una vez, obtendrá dos trozos; dividirlo dos veces obtendrá tres.

📋 En general, cuando divides una cadena K veces, obtienes K + 1 fragmentos.

Esto se ilustra a continuación.

Cómo funciona el parámetro maxsplit (Imagen del autor)

py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

#1. Establecemos maxsplit igual a 1. No hemos especificado un separador, por lo que la división se producirá en espacios en blanco de forma predeterminada.

Aunque el segundo fragmento de la lista contiene espacios en blanco, la división no se produce porque la división ahora está controlada por el valor maxsplit de uno.

py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

#2. Aumentemos el valor de maxsplit a 2 y observemos cómo se produce la división en el siguiente ejemplo.

Al igual que en el ejemplo anterior, el valor maxsplit decide el número de divisiones realizadas. Obtenemos tres fragmentos, divisiones después de la primera y segunda aparición de espacios en blanco.

#3. ¿Qué sucede si establece maxsplit en un valor mayor que el número de ocurrencias del separador?

py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

En la siguiente celda de código, establecemos maxsplit en 8 cuando la cadena contiene solo cuatro comas.

Aquí, el método split divide py_str en las cuatro apariciones de una coma. Incluso si intenta establecer maxsplit en un valor inferior a -1, por ejemplo, -7, la división se realizará en todas las apariciones del separador.

A continuación, reunamos todo lo que hemos aprendido y usemos ambos parámetros sep maxsplit.

Dividir una cadena de Python en trozos en un separador

py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

#1. Supongamos que necesitamos dividir la cadena py_str en tres fragmentos cuando aparece una coma (,). Para hacer esto, podemos establecer el valor de sep en ‘,’ y el valor de maxsplit en 2 en la llamada al método.

Como se ve en la salida, la división se produce dos veces en las dos primeras apariciones del separador.

#2. El separador sep no siempre tiene que ser un carácter especial. Puede ser una secuencia de caracteres especiales, como los guiones bajos dobles que usamos anteriormente, o incluso podría ser una subcadena.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

Establezcamos la cadena ‘aprender’ como el argumento sep y veamos cómo se produce la división para diferentes valores de maxsplit. Aquí, establecemos maxsplit en 2.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

#3. Si desea dividir py_str en todas las apariciones de la cadena ‘aprender’, podemos llamar a este método .split() configurando sep = ‘aprender’, sin el parámetro maxsplit. Esto es equivalente a establecer explícitamente el valor maxsplit en -1, como se muestra en la celda de código a continuación.

Vemos que la división se produce en todas las apariciones de ‘aprender’.

Terminando

Espero que ahora hayas entendido cómo usar el método .split() con cadenas de Python.

  • He aquí un resumen de este tutorial:
  • El método .split() incorporado de Python divide una cadena en una lista de cadenas.
  • Use string.split() para dividir la cadena en todas las apariciones del separador predeterminado, espacios en blanco.

Utilice string.split(sep,maxsplit) para dividir la cadena maxsplit el número de veces que aparece el separador sep. La lista resultante tiene maxsplit+1 elementos.

Como siguiente paso, puede aprender cómo verificar si las cadenas de Python son palíndromos o anagramas.