886 votos

Python elimina todos los espacios en blanco en una cadena

Posible duplicado:
¿Cómo se recortan los espacios en blanco (incluyendo las pestañas)?

Quiero eliminar todos los espacios en blanco de una cadena, en ambos extremos, y entre palabras.

Tengo este código Python:

def my_handle(self):
    sentence = ' hello  apple  '
    sentence.strip()

Pero eso sólo elimina los espacios en blanco a ambos lados de la cadena. ¿Cómo se eliminan todos los espacios en blanco?

1826voto

Cédric Julien Puntos 24177

Si quieres eliminar los espacios de entrada y salida, usa str.strip() :

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

Si quieres eliminar todos los espacios, puedes usar str.replace() :

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

Si quieres eliminar los espacios duplicados, usa el str.split() :

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

307voto

Mark Byers Puntos 318575

Para eliminar sólo espacios use str.replace :

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

Para eliminar todos los personajes de los espacios en blanco (espacio, tabulación, nueva línea, etc.) que puedes 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 quieres eliminar los espacios en blanco sólo desde el principio y el final puedes usar strip :

sentence = sentence.strip()

También puedes usar lstrip para eliminar los espacios en blanco sólo desde el principio de la cadena, y rstrip para eliminar los espacios en blanco del final de la cadena.

115voto

Emil Stenström Puntos 3551

Una alternativa es utilizar expresiones regulares y hacer coincidir estos extraños caracteres de espacio en blanco también. He aquí algunos ejemplos:

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

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

Elimina los espacios en el PRINCIPIO de una cadena:

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

Elimina los espacios en el FIN de una cadena:

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

Elimina los espacios tanto al PRINCIPIO como al FINAL de una cadena:

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

Elimine SOLO los 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)

48voto

MaK Puntos 1268

El "espacio en blanco" incluye espacio, tabulador y CRLF . Así que un elegante y un solo texto La función de cadena que podemos utilizar es str.translate :

Python 3

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

O si quieres ser minucioso:

import string
' hello  apple'.translate(str.maketrans('', '', string.whitespace))

Python 2

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

O si quieres ser minucioso:

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

17voto

wal-o-mat Puntos 1413

Para eliminar los espacios en blanco de principio a fin, utilice strip .

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X