Python, split para dividir una cadena separada por comas, eliminar los espacios en blanco y convertirla en una lista

Negocio

Al dividir una cadena separada por comas en una lista en Python, si no hay espacios en medio, sólo funcionará split(). Si hay espacios, es útil combinarlo con strip() para eliminar los espacios extra. Además, usar la notación de comprensión de listas es una forma inteligente de escribir.

En esta sección, primero explicamos lo siguiente.

  • Divide una cadena con un delimitador especificado y la devuelve como una listasplit()
  • Elimina los caracteres sobrantes del principio y el final de una cadena.strip()
  • Notación de comprensión de la lista para aplicar funciones y métodos a los elementos de la lista.

También muestra cómo hacer una lista de cadenas separadas por espacios y comas eliminando los espacios, como se muestra a continuación.
'one, two, three'

Además, discutiremos lo siguiente

  • Cómo obtenerlo como una lista de números
  • Cómo utilizar join() para unir una lista y convertirla de nuevo en una cadena

split(): Divide una cadena con un delimitador especificado y la devuelve como una lista

Utilizando el método split() para cadenas, puede dividir una cadena con un delimitador especificado y obtenerla como una lista (array). El delimitador especificado puede ser especificado por el siguiente argumento.sep

Si se omite el argumento sep y no se especifica ningún delimitador, divide la cadena por espacios y devuelve una lista. Los espacios y tabuladores consecutivos también dividirán la lista, por lo que si desea hacer una lista de cadenas delimitadas por tabuladores, puede utilizar split() sin el argumento.

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

Si se especifica un delimitador en el argumento sep, divide la lista por esa cadena y devuelve una lista.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

En el caso de una cadena separada por comas, si no hay espacio en blanco extra, no hay problema, pero si ejecuta split() con una coma como delimitador para una cadena separada por una coma + espacio en blanco, terminará con una lista de cadenas con espacio en blanco al principio.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

Puede utilizar una coma + un espacio como delimitador, pero no funcionará si el número de espacios en la cadena original es diferente.', '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

El método de cadena strip(), que se explicará a continuación, puede utilizarse para tratar dos espacios.

strip(): Elimina los caracteres sobrantes del principio y el final de una cadena.

strip() es un método para eliminar los caracteres sobrantes del principio y el final de una cadena.

Si se omite el argumento, se devuelve una nueva cadena con caracteres de espacio en blanco eliminados. La cadena original no se modifica.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

Si se especifica una cadena como argumento, se eliminarán los caracteres contenidos en ella.

s = '-+-one-+-'
print(s.strip('-+'))
# one

En este caso, los espacios no se eliminan. Por lo tanto, si quiere eliminar también los espacios en blanco, pase una cadena que incluya espacios como argumento, como se muestra a continuación.'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

strip() se encarga de ambos extremos, pero también están disponibles las siguientes funciones.

  • lstrip():El proceso es sólo el principio
  • rstrip():Procesar sólo el final de la línea.

Notación de comprensión de la lista: aplicar funciones y métodos a los elementos de la lista

Si quieres aplicar una función o método a los elementos de una lista, es inteligente utilizar la notación de comprensión de la lista en lugar del bucle for si quieres obtener la lista al final.

Aquí, aplicamos strip() a la lista obtenida al dividir la cadena con split(). El espacio en blanco extra en una cadena separada por comas que contiene espacios en blanco puede ser eliminado para hacer una lista.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

Cuando esto se aplica a una cadena vacía, se puede obtener una lista con una sola cadena vacía como elemento.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

Si quieres obtener una lista vacía para una cadena vacía, puedes establecer una rama condicional en la notación de comprensión de la lista.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
Además, si falta un elemento separado por comas, como se ha descrito anteriormente, el primer método lo listará como un elemento de cadena vacío.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

Si quiere ignorar las partes que faltan, puede establecer una rama condicional en la notación de comprensión de la lista.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

Obtener como una lista de números

Si desea obtener una cadena de números separada por comas como una lista de números en lugar de una cadena, aplique int() o float() para convertir la cadena en un número en la notación de comprensión de listas.

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join(): Combinar una lista y obtenerla como una cadena

En el patrón opuesto, si quieres unir una lista y obtener cadenas separadas por un delimitador específico, utiliza el método join().

Es fácil equivocarse, pero tenga en cuenta que join() es un método de cadena, no de lista. La lista se especifica como argumento.

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

Puedes escribirlo en una línea de la siguiente manera.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

Si sólo quieres cambiar un delimitador fijo, es más fácil reemplazarlo con el método replace().

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three
Copied title and URL