¿Cómo elimino los espacios en blanco iniciales en Python?

180

Tengo una cadena de texto que comienza con varios espacios, que varían entre 2 y 4.

¿Cuál es la forma más sencilla de eliminar el espacio en blanco principal? (es decir, ¿eliminar todo antes de cierto personaje?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"
James Wanchai
fuente

Respuestas:

317

El lstrip()método eliminará los espacios en blanco iniciales, la nueva línea y los caracteres de tabulación en una cadena que comience:

>>> '     hello world!'.lstrip()
'hello world!'

Editar

Como Balpha señaló en los comentarios , para eliminar solo los espacios desde el comienzo de la cadena, lstrip(' ')debe usarse:

>>> '   hello world with 2 spaces and a tab!'.lstrip(' ')
'\thello world with 2 spaces and a tab!'

Pregunta relacionada:

Coobird
fuente
10
Sin embargo, tenga en cuenta que lstrip elimina los espacios en blanco iniciales que pueden ser más que espacios (pestañas, etc.). Eso suele ser lo que quieres. Si desea eliminar espacios y solo espacios, llame a "bla" .lstrip ("")
balpha
1
@balpha: ¡Gracias por señalarlo! He agregado eso a la respuesta.
coobird
3
he estado programando durante años y no sabía esto, salvavidas
Chris Hawkes
3
Puede ser útil tener en cuenta para los nuevos programadores de Python que las cadenas en python son inmutables, por lo que si está trabajando con una cadena 'string_a', podría pensar que string_a.lstrip () cambiará la cadena en sí, pero de hecho necesita asignar el valor de string_a.lstrip () a sí mismo o a una nueva variable, por ejemplo, "string_a = string_a.lstrip ()".
Campos
2
nota: como hay lstrip () también hay strip () y rstrip ()
Alexander Stohr
86

La función stripeliminará espacios en blanco desde el principio y el final de una cadena.

my_str = "   text "
my_str = my_str.strip()

establecerá my_stra "text".

Marqués Wang
fuente
17

Si desea cortar los espacios en blanco antes y detrás de la palabra, pero mantenga los medios.
Podrías usar:

word = '  Hello World  '
stripped = word.strip()
print(stripped)
Tenzin
fuente
Vale la pena señalar que este hace de impresión 'Hello World'con el espacio central intacta, para cualquier persona preguntándose, supongo que ha sido votado abajo porque la pregunta original estaba pidiendo específicamente para eliminar los principales espacios.
conapart3
2
docs.python.org/3/whatsnew/3.0.html Imprimir es una función La declaración de impresión ha sido reemplazada por una función de impresión (), con argumentos de palabras clave para reemplazar la mayor parte de la sintaxis especial de la declaración de impresión anterior (PEP 3105).
mbrandeis
@mbrandeis ¿Cómo es relevante esa declaración aquí?
MilkyWay90
12

Para eliminar todo antes de un determinado carácter, use una expresión regular:

re.sub(r'^[^a]*', '')

para eliminar todo hasta la primera 'a'. [^a]se puede reemplazar con cualquier clase de caracteres que desee, como caracteres de palabras.

cjs
fuente
3
Creo que el tipo pidió la "forma más fácil y más simple"
Nop
10
Es cierto, pero él también (quizás sin darse cuenta) pidió la solución para un problema más general, "¿eliminar todo antes de un cierto carácter?", Y esta es esa solución más general.
cjs
1

La pregunta no aborda las cadenas multilínea, pero así es cómo se eliminarían los espacios en blanco iniciales de una cadena multilínea utilizando el módulo de texto de biblioteca estándar de python . Si tuviéramos una cadena como:

s = """
    line 1 has 4 leading spaces
    line 2 has 4 leading spaces
    line 3 has 4 leading spaces
"""

si print(s)obtuviéramos resultados como:

>>> print(s)
    this has 4 leading spaces 1
    this has 4 leading spaces 2
    this has 4 leading spaces 3

y si usamos textwrap.dedent:

>>> import textwrap
>>> print(textwrap.dedent(s))
this has 4 leading spaces 1
this has 4 leading spaces 2
this has 4 leading spaces 3
Jaymon
fuente