Módulo 12 - Trabalhando com textos

Removendo espaços: strip, lstrip e rstrip

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Remover espaços das pontas de uma string com .strip().
  • Diferenciar .strip(), .lstrip() e .rstrip() e saber quando usar cada um.
  • Diagnosticar o bug do espaço invisível em comparações com input().
  • Adotar o hábito profissional de escrever input().strip().

O espaço que ninguém vê

Todo programador tem uma história com esse bug. O programa pergunta se o usuário quer continuar, ele digita sim, aperta Enter e cai no else como se tivesse recusado. O código está certo, a resposta está certa, e mesmo assim a comparação falha. O culpado é um personagem que não aparece na tela: um espaço encostado na resposta, digitado sem querer antes ou depois da palavra. Para o Python, "sim " e "sim" são strings diferentes, com tamanhos diferentes, e a comparação com == devolve False sem dó.

resposta = "sim "  # o usuário encostou na barra de espaço sem perceber

print(resposta == "sim")   # False
print(len(resposta))       # 4 (s, i, m e o espaço fantasma)

O bug do espaço invisível reproduzido em laboratório. O len() entrega o intruso.

Esse tipo de defeito é traiçoeiro justamente porque o print não ajuda: as duas strings parecem idênticas na tela. A dica de diagnóstico que os profissionais usam é imprimir o tamanho com len() ou imprimir o texto entre delimitadores, como print(f"[{resposta}]"), que expõe o espaço encostado no colchete. Mas melhor que diagnosticar é prevenir, e é para isso que existe o método desta aula.

strip, lstrip e rstrip na prática

O .strip() devolve uma cópia da string sem os espaços em branco das duas pontas. Ele remove espaço comum, tabulação e quebra de linha, tudo de uma vez, e para o miolo do texto ele não olha: os espaços entre as palavras ficam intactos, como devem ficar. As variantes .lstrip() e .rstrip() fazem o mesmo serviço em apenas um lado, esquerda (left) ou direita (right).

frase = "   curso de Python   "

print(frase.strip())   # "curso de Python"
print(frase.lstrip())  # "curso de Python   "
print(frase.rstrip())  # "   curso de Python"

# O miolo não muda: os espaços entre as palavras continuam lá.

As três variantes aplicadas na mesma string. Só as pontas são limpas.

MétodoLimpa ondeQuando usar
.strip()Início e fimO caso geral: limpar entrada do usuário
.lstrip()Só o inícioRaro; útil ao alinhar textos vindos de arquivos
.rstrip()Só o fimRemover a quebra de linha ao ler linhas de arquivo (módulo 15)

Na dúvida, use .strip(). As variantes têm hora certa, e o módulo 15 mostra a do .rstrip().

Vale repetir a lição da aula passada, porque ela vale para todos os métodos de string: o original não muda. Se você rodar frase.strip() numa linha solta, a versão limpa nasce e morre ali. Guarde o resultado numa variável, nem que seja a mesma: frase = frase.strip().

O hábito que fica: input().strip()

Agora a parte que muda o seu código daqui para a frente. Desde o módulo 5 você lê dados do usuário com input(), e tudo que vem do teclado pode chegar com espaço de brinde: dedo que escorrega, texto colado de outro lugar, celular que insiste em completar a palavra com espaço. A defesa é encadear o .strip() direto na leitura, no mesmo comando. Como input() devolve uma string, o método pode ser chamado na sequência, sem variável intermediária.

resposta = input("Quer continuar? (sim/nao) ").strip().lower()

if resposta == "sim":
    print("Continuando...")
else:
    print("Até a próxima!")

# " SIM ", "Sim" e "sim" agora caem todos no primeiro bloco.

A dupla de ouro: .strip() tira os espaços das pontas e .lower() normaliza a caixa.

Repare no encadeamento: input() devolve uma string, .strip() devolve outra string, e sobre ela o .lower() é chamado. Essa corrente de métodos, cada um trabalhando sobre o resultado do anterior, é um padrão que você vai ver em código Python profissional o tempo todo, e a prática deste módulo usa a mesma ideia. A ordem entre .strip() e .lower() aqui tanto faz, porque um mexe nas pontas e o outro na caixa, mas a convenção é limpar primeiro e normalizar depois.

De hoje em diante, considere input().strip() o seu padrão para toda leitura de texto. Custa sete caracteres e elimina uma família inteira de bugs. Nos gabaritos das práticas a partir deste módulo, é assim que as entradas aparecem, e no projeto final o gerenciador de tarefas lê todas as opções do menu desse jeito.

Teste rápido

Por que vale a pena escrever input("Opção: ").strip() em vez de só input("Opção: ")?

Perguntas frequentes

O .strip() remove os espaços entre as palavras?
Não, e isso é proposital. Ele só limpa as pontas: " bom dia ".strip() devolve "bom dia", com o espaço do meio preservado. Se você precisar mexer nos espaços internos, o caminho é outro, com .replace() ou .split(), que aparecem nas próximas aulas deste módulo.
O .strip() remove só espaço ou outras coisas também?
Sem argumentos, ele remove qualquer espaço em branco das pontas: espaço comum, tabulação e quebra de linha. Dá também para passar um argumento dizendo quais caracteres remover, como "...oi...".strip(".") devolvendo "oi", mas esse uso é menos comum e não é necessário neste curso.
Preciso decorar .lstrip() e .rstrip()?
Não. Grave o .strip(), que resolve o caso geral, e lembre que existem variantes de um lado só. O .rstrip() vai reaparecer com utilidade concreta no módulo 15, para remover a quebra de linha ao ler arquivos linha a linha. Consultar a documentação na hora do uso é prática normal de profissional.
Encadear métodos como input().strip().lower() não deixa o código confuso?
Em correntes curtas, de dois ou três métodos, é o contrário: o código fica mais direto e se lê como uma frase, leia, limpe, normalize. Correntes muito longas aí sim atrapalham a leitura, e nesse caso vale quebrar em variáveis intermediárias com nomes claros. Bom senso é parte do ofício.
E se o usuário digitar só espaços e apertar Enter?
O .strip() devolve uma string vazia, "". Isso é ótimo para validação: if resposta == "" detecta que o usuário não digitou nada de útil, cobrindo tanto o Enter seco quanto a barra de espaço nervosa. No projeto final, essa checagem impede o cadastro de tarefas em branco.
O bug do espaço invisível acontece em programas de verdade?
Acontece todos os dias, e não só com iniciantes. Dados colados de planilhas, formulários web e arquivos de texto chegam com espaços extras com frequência, e sistemas que não limpam a entrada criam cadastros duplicados e buscas que não encontram nada. Limpar entrada na porta é regra básica de qualidade de software.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.