Python: dividir cadena en lista con split ()

En esta breve guía, aprenda cómo dividir una cadena en una lista en Python. Además, ¡aprende cómo dividir una cadena y luego recortar los elementos, y poner las primeras letras en mayúscula, a través de ejemplos prácticos!

Los datos pueden tomar muchas formas y formas, y a menudo se representan como cadenas.

Ya sea desde un archivo CSV o texto de entrada, a menudo dividimos cadenas para obtener listas de características o elementos.

En esta guía, veremos cómo dividir una cadena en una lista en Python, con el método split().

Dividir cadena en lista en Python

El método split() de la clase de cadena es bastante sencillo. Divide la cadena, dado un delimitador, y devuelve una lista que consta de los elementos separados de la cadena.

{.icon aria-hidden=“true”}

De forma predeterminada, el delimitador se establece en un espacio en blanco, por lo que si omite el argumento del delimitador, su cadena se dividirá en cada espacio en blanco.

Echemos un vistazo al comportamiento del método split():

1
2
3
4
5
6
7
string = "Age,University,Name,Grades"

lst = string.split(',')

print(lst)
print('Element types:', type(lst[0]))
print('Length:', len(lst))

Nuestra cadena tenía elementos delimitados con una coma, como en un archivo CSV (valores separados por comas), por lo que configuramos el delimitador de manera adecuada.

Esto da como resultado una lista de elementos de tipo str, sin importar qué otro tipo puedan representar:

1
2
3
['Age', 'University', 'Name', 'Grades']
Element types: <class 'str'>
Length: 4

Dividir cadena en lista, recortar espacios en blanco y cambiar mayúsculas y minúsculas

No todas las cadenas de entrada están limpias, por lo que no siempre tendrá una cadena perfectamente formateada para dividir. A veces, las cadenas pueden contener espacios en blanco que no deberían estar en el "producto final" o tener una discrepancia de letras mayúsculas y minúsculas.

Afortunadamente, es bastante fácil procesar esta lista y cada elemento en ella, después de dividirla:

1
2
3
4
5
# Contains whitespaces after commas, which will stay after splitting
string = "age, uNiVeRsItY, naMe, gRaDeS"
lst = string.split(',')

print(lst)

Esto resulta en:

1
['age', ' uNiVeRsItY', ' naMe', ' gRaDeS']

¡No es bueno! Cada elemento comienza con un espacio en blanco y los elementos no están en mayúsculas correctamente. La aplicación de una función a cada elemento de una lista se puede hacer fácilmente a través de un bucle for simple, por lo que querremos aplicar un strip()/trim() (para eliminar los espacios en blanco) y un función de capitalización.

Dado que no solo estamos buscando poner en mayúscula la primera letra, sino también mantener el resto en minúsculas (para hacer cumplir la conformidad), definamos una función auxiliar para eso:

1
2
def capitalize_word(string):
    return string[:1].capitalize() + string[1:].lower()

El método toma una cadena, la corta en su primera letra y la escribe en mayúscula. El resto de la cadena se convierte a minúsculas y las dos cadenas modificadas se concatenan.

Ahora también podemos usar este método en un bucle:

1
2
3
4
5
6
7
8
9
string = "age, uNiVeRsItY, naMe, gRaDeS"

lst = string.split(',')
lst = [s.strip() for s in lst]
lst = [capitalize_word(s) for s in lst]

print(lst)
print('Element types:', type(lst[0]))
print('Length:', len(lst))

Esto da como resultado una limpieza:

1
2
3
['Age', 'University', 'Name', 'Grades']
Element types: <class 'str'>
Length: 4

Dividir cadena en lista y convertir a entero

¿Qué sucede si está trabajando con una lista de números enteros representados por cadenas? Después de dividir, no podrá realizar operaciones con enteros en estos, ya que aparentemente son cadenas.

Afortunadamente, podemos usar el mismo bucle for que antes para convertir los elementos en números enteros:

1
2
3
4
5
6
7
8
string = "1,2,3,4"

lst = string.split(',')
lst = [int(s) for s in lst]

print(lst)
print('Element types:', type(lst[0]))
print('Length:', len(lst))

Lo que ahora resulta en:

1
2
3
[1, 2, 3, 4]
Element types: <class 'int'>
Length: 4

Dividir cadena en lista con limitador

Además del delimitador, el método split() acepta un limitador: el número de veces que debe ocurrir una división.

Es un número entero y se define después del delimitador:

1
2
3
4
string = "Age, University, Name, Grades"

lst = string.split(',', 2)
print(lst)

Aquí, se producen dos divisiones, en la primera y la segunda coma, y ​​no se producen divisiones después de eso:

1
['Age', ' University', ' Name, Grades']

Conclusión

En esta breve guía, ha aprendido cómo dividir una cadena en una lista en Python.

También aprendió cómo recortar los espacios en blanco y corregir el uso de mayúsculas como un paso de procesamiento simple además de dividir una cadena en una lista.

Licensed under CC BY-NC-SA 4.0