Quiero eliminar todo el espacio en blanco de una cadena, en ambos extremos y entre palabras.
Tengo este código de Python:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Pero eso solo elimina el espacio en blanco en ambos lados de la cadena. ¿Cómo elimino todos los espacios en blanco?
python
trim
removing-whitespace
co2f2e
fuente
fuente
hello apple
?helloapple
?Respuestas:
Si desea eliminar los espacios iniciales y finales, use
str.strip()
:Si desea eliminar todos los caracteres de espacio, use
str.replace()
:(Nota: esto solo elimina el carácter de espacio ASCII "normal"
' ' U+0020
pero no cualquier otro espacio en blanco )Si desea eliminar espacios duplicados, use
str.split()
:fuente
sentence.join(str_list)
le pides a Python que combine elementos de str_list con unsentence
separador."".join(sentence.split())
es de hecho la solución canónica, eliminando eficientemente todos los espacios en blanco en lugar de simplemente espacios. La excelente respuesta de Mark Byers probablemente debería haber sido aceptada en lugar de esta respuesta menos aplicable.Para eliminar solo espacios use
str.replace
:Para eliminar todos los espacios en blanco (espacio, tabulación, nueva línea, y así sucesivamente) que puede utilizar
split
a continuaciónjoin
:o una expresión regular:
Si solo desea eliminar espacios en blanco desde el principio y el final, puede usar
strip
:También puede usar
lstrip
para eliminar espacios en blanco solo desde el comienzo de la cadena, yrstrip
para eliminar espacios en blanco desde el final de la cadena.fuente
yourstr.translate(str.maketrans('', '', ' \n\t\r'))
Una alternativa es usar expresiones regulares y hacer coincidir estos extraños caracteres de espacio en blanco también. Aquí hay unos ejemplos:
Elimine TODOS los espacios en una cadena, incluso entre palabras:
Eliminar espacios al COMIENZO de una cadena:
Eliminar espacios al final de una cadena:
Elimine espacios tanto al PRINCIPIO como al FINAL de una cadena:
Eliminar SOLO espacios DUPLICADOS:
(Todos los ejemplos funcionan tanto en Python 2 como en Python 3)
fuente
El espacio en blanco incluye espacio, pestañas y CRLF . Entonces, una función de cadena elegante y de una línea que podemos usar es
str.translate
:Python 3
O si quieres ser minucioso:
Python 2
O si quieres ser minucioso:
fuente
\xc2\xa0
ans.translate( None, string.whitespace )
produce solobuiltins.TypeError: translate() takes exactly one argument (2 given)
para mi. Docs dice que el argumento es una tabla de traducción, vea string.maketrans (). Pero vea el comentario de Amnon Harel, a continuación.' hello apple'.translate(str.maketrans('', '', string.whitespace))
Nota: es mejor hacer una variable para almacenar la tabla trans si tiene la intención de hacerlo varias veces.Para eliminar espacios en blanco desde el principio y el final, use
strip
.fuente
MaK ya señaló el método de "traducción" anterior. Y esta variación funciona con Python 3 (ver estas preguntas y respuestas ).
fuente
xxx.translate( { ord(c) :None for c in string.whitespace } )
por minuciosidad.Ten cuidado:
strip
realiza un rstrip y lstrip (elimina los espacios iniciales y finales, las pestañas, los retornos y los feeds de formularios, pero no los elimina en el medio de la cadena).Si solo reemplaza espacios y pestañas, puede terminar con CRLF ocultos que parecen coincidir con lo que está buscando, pero no son lo mismo.
fuente
fuente
Además, la tira tiene algunas variaciones:
Eliminar espacios al principio y al final de una cadena:
Eliminar espacios al COMIENZO de una cadena:
Eliminar espacios al final de una cadena:
Las tres funciones de cadena
strip
lstrip
, yrstrip
pueden tomar parámetros de la cadena para despojar, siendo el valor predeterminado todo el espacio en blanco. Esto puede ser útil cuando está trabajando con algo en particular, por ejemplo, podría eliminar solo espacios pero no líneas nuevas:O podría eliminar comas adicionales al leer en una lista de cadenas:
fuente
Documentos de Python:
fuente
re
se sugirió antes, pero descubrí que la respuesta real al título de la pregunta estaba un poco oculta entre todas las otras opciones.