Trilha de aprendizado · Nível 3 · Tutorial 3

Dividir, unir e normalizar textos

Transformar textos com métodos de string e converter entre um texto e uma lista de partes, preservando os resultados das operações.

  • Nível: Iniciante
  • Duração: 15 min
  • 7 passos
Dividir, unir e normalizar textos

O que você vai percorrer

  1. Limpar as extremidades e guardar o resultado Use strip() para limpar as bordas de um texto e aproveite o retorno sem confundi-lo com o valor original. 2 min
  2. Padronizar maiúsculas e minúsculas Escolha lower ou upper conforme a regra da tarefa e reconheça que os espaços permanecem no resultado. 2 min
  3. Substituir trechos com replace Troque trechos de um texto e diferencie a substituição da limpeza das extremidades. 2 min
  4. Dividir um texto em partes com split Transforme uma string em uma lista de partes e entenda como a escolha do separador afeta espaços e elementos vazios. 3 min
  5. Unir partes com join Construa um texto a partir de uma lista de strings, escolhendo o separador e prevendo o resultado. 2 min
  6. Combinar transformações sem perder os retornos Combine métodos na ordem adequada e acompanhe a passagem de string para lista e de volta para string. 2 min
  7. Aplicação final: padronizar palavras-chave Transforme uma entrada irregular em uma lista e em um texto padronizado, preservando o original e conferindo os resultados no seu Python. 3 min

O que você vai aprender

  • Remover espaços das extremidades e padronizar maiúsculas ou minúsculas.
  • Substituir partes de um texto sem confundir essa operação com a limpeza das extremidades.
  • Dividir textos em listas escolhendo o separador adequado.
  • Unir elementos textuais de uma lista com um separador.
  • Armazenar ou encadear os resultados dos métodos, reconhecendo que a string original não é alterada.

Antes de começar

  • Organizar e atualizar dados em listas

Passo 1 de 7

Limpar as extremidades e guardar o resultado

Use strip() para limpar as bordas de um texto e aproveite o retorno sem confundi-lo com o valor original.

Limpar só as bordas

texto.strip() retorna um texto sem os espaços em branco do início e do fim, incluindo tabulações e quebras de linha nessas extremidades. Os espaços entre as palavras permanecem.

Strings são imutáveis: esse método não modifica a string original. Ele retorna o resultado da limpeza.

Comparação de strip(): a entrada tem dois espaços antes de Ana, dois entre Ana e Lima e dois depois de Lima. O resultado mantém apenas os dois espaços internos.

Cada ponto representa um espaço: strip() retira os das bordas, mas preserva os internos.

O que permanece?

Ao aplicar strip() a um texto com dois espaços entre Ana e Lima, o resultado terá apenas um espaço entre essas palavras.

Guarde o retorno

Atribua o retorno a outra variável para manter a entrada disponível. Ou atribua à mesma variável para passar a usar o texto limpo.

Duas formas de aproveitar o resultado

As barras na exibição ajudam a enxergar os espaços nas bordas.

python
original = "  Ana  Lima  "
limpo = original.strip()

print(f"|{original}|")  # |  Ana  Lima  |
print(f"|{limpo}|")     # |Ana  Lima|

# Para passar a usar o resultado na mesma variável:
original = original.strip()
print(f"|{original}|")  # |Ana  Lima|

Dica

Chamar não é atualizar

Escrever apenas original.strip() não atualiza a variável. Já original = original.strip() faz a variável passar a guardar o retorno; isso não modifica a string anterior.

Acompanhe o valor

Considere este código:

nome = "  Bia  "
nome.strip()
print(f"|{nome}|")

Qual será a saída?

Passo 2 de 7

Padronizar maiúsculas e minúsculas

Escolha lower ou upper conforme a regra da tarefa e reconheça que os espaços permanecem no resultado.

Mude as letras, não os espaços

lower() retorna o texto em minúsculas. upper() retorna o texto em maiúsculas. Ambos mantêm os espaços, inclusive os das extremidades.

Como no uso de strip(), guarde o retorno para aproveitar a transformação.

A mesma entrada, dois resultados

Comparação com um ponto representando cada espaço: entrada ·PyThOn·; resultado de lower(): ·python·; resultado de upper(): ·PYTHON·. O espaço inicial e o final permanecem nos dois resultados.

Cada ponto representa um espaço. Apenas as letras mudam; os espaços continuam nas mesmas posições.

A regra depende da tarefa

Padronizar maiúsculas e minúsculas também é chamado de normalizar a caixa. Não existe uma escolha universal: uma tarefa pode exigir rótulos em maiúsculas; outra, comparar respostas em minúsculas.

Neste exemplo, a regra é comparar o status em minúsculas:

Comparar usando o retorno

python
status = "AtIvO"
status_padronizado = status.lower()

print(status_padronizado)             # ativo
print(status_padronizado == "ativo")  # True
print(status)                        # AtIvO

Dica

A comparação usa o resultado guardado. O texto original continua disponível em status.

Associe a regra ao resultado

Associe cada entrada e regra à chamada correta com seu retorno. As aspas delimitam os textos; os espaços dentro delas fazem parte do valor.

Toque em um item e depois no par correspondente.

Passo 3 de 7

Substituir trechos com replace

Troque trechos de um texto e diferencie a substituição da limpeza das extremidades.

Procurar um trecho e trocar por outro

Use texto.replace(trecho_procurado, substituto) para trocar todas as ocorrências do trecho indicado. A busca é literal: diferencia maiúsculas de minúsculas e encontra o trecho até dentro de palavras.

A ordem dos argumentos importa

Primeiro vem o trecho procurado; depois, o substituto. Guarde o retorno para aproveitar a transformação.

python
texto = "gato Gato gato"
resultado = texto.replace("gato", "cão")
print(resultado)
# Saída: cão Gato cão

Dica

Gato ficou intacto porque não corresponde exatamente a gato. A variável texto continua com o conteúdo original.

Quais trechos correspondem?

Qual é o valor de resultado após este código?

resultado = "sol solar Sol".replace("sol", "mar")

Bordas ou qualquer posição?

strip() limpa os espaços em branco das extremidades. Já replace(" ", "") substitui cada espaço comum por um texto vazio: isso remove esses espaços também no interior do texto.

Compare as regiões afetadas

Comparação usando dois espaços antes de Ana, um entre Ana e Maria e dois no final. Com strip(), saem apenas os quatro espaços das bordas. Com replace de espaço por texto vazio, saem os cinco espaços.

Cada quadrado pontilhado representa um espaço. O espaço entre as palavras só desaparece na substituição.

Os colchetes impressos ajudam a enxergar onde cada resultado começa e termina.

python
nome = "  Ana Maria  "
so_bordas = nome.strip()
sem_espacos = nome.replace(" ", "")

print(f"[{so_bordas}]")
# Saída: [Ana Maria]
print(f"[{sem_espacos}]")
# Saída: [AnaMaria]

Escolha pela transformação desejada

Você tem nome = " Bia Lima " e quer guardar "Bia Lima" em resultado, preservando o espaço interno. Qual linha atende à regra?

Passo 4 de 7

Dividir um texto em partes com split

Transforme uma string em uma lista de partes e entenda como a escolha do separador afeta espaços e elementos vazios.

Sem argumento ou com um espaço?

split retorna uma lista de strings

Sem argumento, split() divide o texto por sequências de espaços em branco, incluindo tabulações e quebras de linha. Espaços em branco nas extremidades não geram partes vazias.

Já split(" ") usa cada espaço comum como separador: espaços consecutivos ou nas extremidades geram strings vazias (''). Veja a diferença na mesma entrada:

Mesma entrada, listas diferentes

python
texto = " sol  lua "

palavras = texto.split()
partes = texto.split(" ")

print(palavras)  # ['sol', 'lua']
print(partes)    # ['', 'sol', '', 'lua', '']

Do texto para as partes

O texto com um espaço antes de sol, dois entre sol e lua e um no final segue por dois caminhos. split() retorna sol e lua. split(" ") retorna cinco elementos: vazio, sol, vazio, lua e vazio.

Cada cartão representa um elemento da lista. Um cartão com '' representa uma string vazia, não um espaço.

Conte as partes vazias

Um espaço não é o mesmo que nenhum argumento

Considere texto = " mar céu ": há um espaço em cada extremidade e três entre as palavras.

A lista retornada por texto.split(" ") contém ____ elementos iguais a ''.

Responda com um número.

Escolha um delimitador explícito

A divisão segue a sequência informada

O separador pode ser uma vírgula, um ponto e vírgula ou uma sequência como "::". O texto é dividido onde essa sequência aparece, e o separador não entra nas partes resultantes.

Separadores consecutivos ou nas extremidades geram strings vazias. Espaços que não pertencem ao separador continuam nas partes.

O espaço antes de pera permanece

python
texto = "uva, pera,,"
frutas = texto.split(",")
print(frutas)  # ['uva', ' pera', '', '']

outro_texto = "::uva::pera::"
outras_partes = outro_texto.split("::")
print(outras_partes)  # ['', 'uva', 'pera', '']

Dica

Dividir não é limpar

Em split(","), só a vírgula é o separador: o espaço em ' pera' é preservado. Guarde a lista retornada; a string de origem continua igual.

Escolha e preveja o resultado

Separar pelas marcas certas

Considere entrada = "azul; verde;;".

Você precisa separar pelos pontos e vírgulas, preservando o espaço antes de verde e as partes vazias.

Qual chamada de split usaria? Escreva também a lista resultante e explique por que não usaria split() sem argumento.

Escreva pelo menos 20 caracteres (0/20).

Passo 5 de 7

Unir partes com join

Construa um texto a partir de uma lista de strings, escolhendo o separador e prevendo o resultado.

O separador faz a chamada

Com join, você transforma uma lista de strings em uma única string. A chamada é feita no separador: separador.join(lista).

O separador entra apenas entre os elementos, nunca antes do primeiro ou depois do último. Guarde o retorno para usar o texto produzido; a lista de origem não é modificada.

Três partes, dois separadores

python
partes = ["sol", "mar", "céu"]
texto = " | ".join(partes)

print(texto)   # sol | mar | céu
print(partes)  # ['sol', 'mar', 'céu']
Três elementos, sol, mar e céu, são unidos em sol | mar | céu. O separador, uma barra vertical cercada de espaços, aparece somente nos dois intervalos.

O separador inteiro é inserido em cada intervalo: espaço, barra vertical e espaço.

Escolha a chamada

Dada a lista cores = ["azul", "verde", "rosa"], qual opção armazena exatamente azul, verde, rosa em texto?

Escolha a formatação

O separador pode ter pontuação, ser um espaço ou ser uma string vazia (""), que junta as partes sem inserir caracteres.

Dividir e depois unir não garante recuperar a formatação original: o novo separador determina como as partes serão conectadas.

Mesmas partes, textos diferentes

python
partes = ["a", "b", "c"]
print(" ".join(partes))   # a b c
print("-".join(partes))   # a-b-c
print("".join(partes))    # abc

entrada = "sol,mar,céu"
palavras = entrada.split(",")
resultado = " / ".join(palavras)
print(resultado)         # sol / mar / céu

Atenção

Todos os elementos precisam ser strings

join não converte números automaticamente. "-".join(["item", 3]) gera um erro do tipo TypeError. Para unir esses valores, você pode escrever "-".join(["item", str(3)]), que retorna "item-3".

Reconheça o limite

O que acontece ao executar texto = " / ".join(["relatório", 2025])?

Passo 6 de 7

Combinar transformações sem perder os retornos

Combine métodos na ordem adequada e acompanhe a passagem de string para lista e de volta para string.

Cada método recebe o retorno anterior

No encadeamento, cada método atua sobre o resultado do anterior. Em texto.lower().replace("rio", "mar"), primeiro o texto fica em minúsculas; depois, a substituição procura "rio" nesse resultado. Atribua a expressão a uma variável para guardar o retorno final.

A ordem muda o resultado

python
texto = "RIO AZUL"

primeiro = texto.lower().replace("rio", "mar")
segundo = texto.replace("rio", "mar").lower()

print(primeiro)  # mar azul
print(segundo)   # rio azul

Dica

Na segunda sequência, replace procura "rio" quando o texto ainda contém "RIO". A conversão posterior para minúsculas não refaz a substituição.

Escolha a sequência

Com texto = "OLA, ANA", qual opção guarda "oi, ana" em resultado?

Acompanhe o tipo em cada etapa

Variáveis intermediárias ajudam a enxergar cada resultado. Para normalizar espaços internos, use split() sem separador e depois " ".join(partes): as palavras ficam separadas por um único espaço, sem espaços nas extremidades.

De texto para partes e de volta

python
original = "  RIO   AZUL  "
etapa = original.lower().replace("rio", "mar")
partes = etapa.split()
resultado = " ".join(partes)

print(partes)     # ['mar', 'azul']
print(resultado)  # mar azul
Fluxo: etapa é uma string com espaços excedentes; split() produz a lista ['mar', 'azul']; join com um espaço produz a string 'mar azul'.

O retorno de split é uma lista; o retorno de join volta a ser uma string.

Atenção

O encadeamento tem um limite

original.split().lower() causa erro: depois de split(), o resultado é uma lista, que não tem o método lower. Aplique lower enquanto o valor ainda for string. Para unir a lista, chame join no separador.

Monte uma sequência válida

Considere entrada = " SOL GUIA ". Ordene as linhas para guardar "estrela guia" em resultado, preservando entrada.

  1. partes = etapa2.split()
  2. resultado = " ".join(partes)
  3. etapa2 = etapa1.replace("sol", "estrela")
  4. etapa1 = entrada.lower()

Passo 7 de 7

Aplicação final: padronizar palavras-chave

Transforme uma entrada irregular em uma lista e em um texto padronizado, preservando o original e conferindo os resultados no seu Python.

Desafio no seu computador

Uma entrada, dois resultados

No Python do seu computador, complete o código abaixo substituindo cada ___ por uma expressão.

Regras: preserve entrada; remova os espaços das extremidades; converta para minúsculas; troque cada ; por um espaço; divida sem separador explícito; una as partes com ", " (vírgula e espaço).

Cada palavra-chave é uma palavra sem espaços internos. Mantenha a ordem e as repetições. Ao terminar, execute o código e confira as três linhas exibidas.

Acompanhe o tipo de cada resultado

Fluxo: entrada em string passa por strip, lower e replace e continua sendo string; split produz uma lista de strings; join produz a string final. Uma ramificação mantém a entrada original separada.

Guarde os retornos em outras variáveis: o original fica disponível para conferência.

Código-base para completar

Os marcadores ___ precisam ser substituídos antes da execução. Os comentários indicam o que cada linha deve produzir.

python
entrada = "  PyThOn ; DADOS;  web ;python  "

limpo = ___       # Remova as extremidades de entrada.
minusculo = ___   # Converta limpo para minúsculas.
separado = ___    # Troque ; por um espaço em minusculo.
palavras = ___    # Divida separado sem informar separador.
final = ___       # Una palavras com vírgula e espaço.

print(f"Original: [{entrada}]")
print(palavras)
print(final)

Relate sua execução

O que apareceu?

Após executar o código no seu computador, relate a lista e o texto final exibidos. A primeira linha ainda mostra a entrada com a caixa e os espaços originais? Explique por quê.

Se algo saiu diferente, descreva a diferença e compare com a solução na próxima tela.

Escreva pelo menos 30 caracteres (0/30).

Confira e ajuste

Solução completa

Compare as expressões com as suas. Se necessário, ajuste o código local e execute novamente.

python
entrada = "  PyThOn ; DADOS;  web ;python  "

limpo = entrada.strip()
minusculo = limpo.lower()
separado = minusculo.replace(";", " ")
palavras = separado.split()
final = ", ".join(palavras)

print(f"Original: [{entrada}]")
print(palavras)
print(final)

Saída esperada

Os colchetes na primeira linha são apenas marcadores adicionados pelo print para deixar os espaços das extremidades visíveis.

text
Original: [  PyThOn ; DADOS;  web ;python  ]
['python', 'dados', 'web', 'python']
python, dados, web, python

Dica

Se o resultado não bateu

Apareceram ; nas palavras? Confira o replace. Surgiram elementos '' na lista? Use split(), não split(" "). A entrada perdeu sua formatação? Confira se você atribuiu algum retorno a entrada em vez de usar outra variável.

Revisão final

Resumo

Dividir, unir e normalizar textos

Escolha o método pela transformação desejada e aproveite o retorno.

  • strip limpa espaços em branco das extremidades, sem remover os internos.
  • lower e upper padronizam a caixa; replace troca trechos com correspondência literal e sensível à caixa.
  • split transforma uma string em uma lista de strings. O separador escolhido determina as partes e os possíveis elementos vazios.
  • join é chamado no separador e une elementos textuais, inserindo o separador apenas entre eles.
  • Guarde os resultados ou encadeie operações compatíveis com o tipo retornado. Para preservar a entrada, não reatribua sua variável.

Tutorial concluído

Parabéns! Você concluiu: Dividir, unir e normalizar textos

Você chegou ao fim da aplicação: uma entrada preservada, uma lista de palavras-chave e um texto padronizado. Use essa mesma lógica para escolher separadores e acompanhar os retornos nas próximas transformações.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso