Como faço para remover espaços em branco à esquerda no Python?

180

Eu tenho uma seqüência de texto que começa com um número de espaços, variando entre 2 e 4.

Qual é a maneira mais simples de remover o espaço em branco à esquerda? (ou seja, remover tudo antes de um determinado personagem?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"
James Wanchai
fonte

Respostas:

317

O lstrip()método removerá os principais espaços em branco, nova linha e caracteres de tabulação em uma sequência de caracteres iniciada:

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

Editar

Como balpha apontou nos comentários , para remover apenas espaços do início da string, lstrip(' ')deve-se usar:

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

Pergunta relacionada:

coobird
fonte
10
Observe, no entanto, que lstrip remove os espaços em branco à esquerda, que podem ser mais que espaços (tabulações etc). Isso geralmente é o que você deseja. Se você deseja remover espaços e espaços somente, chamada .lstrip "bla" (" ")
balpha
1
@balpha: Obrigado por apontar isso! Eu adicionei isso à resposta.
coobird
3
sido programação por anos e não sabia disso, salva-vidas
Chris Hawkes
3
Pode ser útil observar para os novos programadores Python que as strings no python são imutáveis; portanto, se você estiver trabalhando com uma string 'string_a', poderá pensar que string_a.lstrip () alterará a própria string, mas na verdade você precisa atribuir o valor de string_a.lstrip () a ele próprio ou a uma nova variável, por exemplo, "string_a = string_a.lstrip ()".
Campos
2
note: como existe lstrip () também há strip () e rstrip ()
Alexander Stohr
86

A função stripremoverá os espaços em branco do início e do fim de uma string.

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

será definido my_strcomo "text".

Marquês Wang
fonte
17

Se você deseja cortar os espaços em branco antes e atrás da palavra, mantenha os do meio.
Você poderia usar:

word = '  Hello World  '
stripped = word.strip()
print(stripped)
Tenzin
fonte
Vale a pena notar que isso é impresso 'Hello World'com o espaço do meio intacto, para quem se perguntar, acho que foi rejeitado porque a pergunta original estava especificamente pedindo para remover os espaços à esquerda .
precisa saber é o seguinte
2
docs.python.org/3/whatsnew/3.0.html Imprimir é uma função A instrução print foi substituída por uma função print (), com argumentos de palavra-chave para substituir a maior parte da sintaxe especial da antiga instrução print (PEP 3105).
mbrandeis
@mbrandeis Como essa declaração é relevante aqui?
usar o seguinte
12

Para remover tudo antes de um determinado caractere, use uma expressão regular:

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

para remover tudo até o primeiro 'a'. [^a]pode ser substituído por qualquer classe de caractere que você desejar, como caracteres de palavra.

cjs
fonte
3
Acho que o cara pediu a "maneira mais fácil e mais simples"
Nope
10
É verdade, mas ele também (talvez inadvertidamente) pediu a solução para um problema mais geral ", ou seja, remove tudo antes de um certo personagem?", E essa é a solução mais geral.
Cjs5
1

A pergunta não aborda cadeias de linhas múltiplas , mas aqui está como você retiraria o espaço em branco à esquerda de uma cadeia de linhas múltiplas usando o módulo textwrap da biblioteca padrão do python . Se tivéssemos uma string como:

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

se conseguiríamos print(s)obter resultados como:

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

e se 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
fonte