Pregunta Eliminar todos los espacios en blanco en una cadena en Python


Quiero eliminar todos los espacios 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 cuerda. ¿Cómo elimino todos los espacios en blanco?


513
2017-11-25 13:51


origen


Respuestas:


Si desea eliminar espacios iniciales y finales, use str.strip():

sentence = ' hello  apple'
sentence.strip()
>>> 'hello  apple'

Si desea eliminar todos los espacios, use str.replace():

sentence = ' hello  apple'
sentence.replace(" ", "")
>>> 'helloapple'

Si desea eliminar espacios duplicados, use str.split():

sentence = ' hello  apple'
" ".join(sentence.split())
>>> 'hello apple'

1142
2017-11-25 13:56



Para eliminar solo espacios utilizar str.replace:

sentence = sentence.replace(' ', '')

Para eliminar todos los personajes de espacios en blanco (espacio, pestaña, nueva línea, etc.) puede usar split entonces join:

sentence = ''.join(sentence.split())

o una expresión regular:

import re
pattern = re.compile(r'\s+')
sentence = re.sub(pattern, '', sentence)

Si solo desea eliminar espacios en blanco desde el principio y el final, puede usar strip:

sentence = sentence.strip()

También puedes usar lstrip para eliminar espacios en blanco solo desde el comienzo de la cadena, y rstrip para eliminar espacios en blanco del final de la cadena.


191
2017-11-25 13:54



Una alternativa es usar expresiones regulares y combinar estos extraños personajes de espacio en blanco también. Aquí hay unos ejemplos:

Elimina TODOS los espacios en una cadena, incluso entre palabras:

import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)

Eliminar espacios en el COMIENZO de una cadena:

import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)

Eliminar espacios en el FINAL de una cadena:

import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)

Elimine espacios tanto en el COMIENZO como en el FINAL de una cadena:

import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)

Eliminar SOLAMENTE espacios DUPLICADOS: 

import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))

(Todos los ejemplos funcionan tanto en Python 2 como en Python 3)


55
2018-02-19 13:05



El espacio en blanco incluye espacio, pestañas y CRLF. Entonces un elegante y un trazador de líneas la función de cadena que podemos usar es traducir:

' hello  apple'.translate(None, ' \n\t\r')

O si quieres ser exhaustivo:

import string
' hello  apple'.translate(None, string.whitespace)

28
2017-11-28 03:36



Para eliminar espacios en blanco desde el principio y el final, use strip.

>> "  foo bar   ".strip()
"foo bar"

16
2017-11-25 13:56



' hello  \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } )

MaK ya señaló el método de "traducir" arriba. Y esta variación funciona con Python 3 (ver esta Q & A)


4
2017-09-26 09:54



import re    
sentence = ' hello  apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub('  ',' ',sentence) #hello world (remove double spaces)

2
2017-10-24 12:46



Ten cuidado:

strip realiza una rstrip y lstrip (elimina los espacios iniciales y finales, las pestañas, las devoluciones 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.


2
2017-11-12 19:30



En adición, tira tiene algunas variaciones:

Eliminar espacios en el COMIENZO y el FINAL de una cadena:

sentence= sentence.strip()

Eliminar espacios en el COMIENZO de una cadena:

sentence = sentence.lstrip()

Eliminar espacios en el FINAL de una cadena:

sentence= sentence.rstrip()

Las tres funciones de cadena strip  lstripy rstrip puede tomar los parámetros de la cadena para pelar, siendo el predeterminado el espacio en blanco. Esto puede ser útil cuando trabaje con algo particular, por ejemplo, puede eliminar solo espacios pero no líneas nuevas:

" 1. Step 1\n".strip(" ")

O puede eliminar comas adicionales al leer en una lista de cadenas:

"1,2,3,".strip(",")

0
2018-04-06 20:51



str1='  geeks for geeks   '
print(str1.strip().replace(' ',''))
output=geeksforgeeks

0
2017-07-18 20:34