split, join e o parsing de texto linha a linha
Um arquivo de texto com uma linha por produto, separada por vírgulas, é basicamente uma planilha disfarçada. split e join transformam esse texto solto em dados organizados, e de volta.
Estudar esta lição interativa →Um arquivo de texto simples, com uma linha por registro e campos separados por vírgula (como "Ana,29,Curitiba"), é basicamente uma planilha disfarçada de texto solto. Para transformar esse texto em dados que o programa consiga usar de verdade (o nome separado da idade, separado da cidade), existe .split(separador): ele quebra uma string em uma lista, cortando exatamente onde o separador aparece.
linha = "Ana,29,Curitiba"
campos = linha.split(",")
print(campos)
print(campos[0])
print(campos[1])O separador (a vírgula) desaparece; sobram só os pedaços entre ele.
O caminho inverso, juntar uma lista de textos numa única string, usa "separador".join(lista), com uma sintaxe que costuma confundir no começo: o separador vem antes do ponto, e a lista vai dentro dos parênteses.
campos = ["Ana", "29", "Curitiba"]
linha = ",".join(campos)
print(linha)Pense em .split() como cortar um barbante em pedaços exatamente em cada nó que existir; e em .join() como amarrar pedaços de barbante de volta, usando um tipo específico de nó (o separador escolhido) entre cada um. É a operação inversa da outra.
Um uso muito comum: separar um texto com várias linhas em uma lista de linhas, usando .split("\n") (a quebra de linha), e depois processar cada linha individualmente, muitas vezes combinando com outro .split(",") dentro de um for:
texto = "Ana,29,Curitiba\nBruno,35,Recife\nCarla,22,Manaus"
for linha in texto.split("\n"):
nome, idade, cidade = linha.split(",")
print(f"{nome} tem {idade} anos e mora em {cidade}.")Duas etapas de split: primeiro por linha, depois por vírgula dentro de cada linha.
Chamado sem nenhum argumento, .split() quebra o texto em qualquer sequência de espaços (inclusive várias seguidas, tabs, quebras de linha), o que é bem útil para separar palavras de uma frase sem se preocupar com espaçamento irregular.
Se a lista tiver algo que não seja string (como um número puro), ",".join(lista) gera TypeError: sequence item 1: expected str instance, int found, apontando a posição do item problemático. A correção é converter cada item para texto antes de juntar, geralmente com str(item), dentro de uma lista nova ou de uma compreensão (que você vai ver no Módulo 8).
tags = ["python", "iniciante", "curso", "programação"]
tags_formatadas = " | ".join(tags)
print(tags_formatadas)Use " | ".join(tags) e imprima o resultado.
normalizar_nome(texto): ela deve remover espaços das pontas e formatar como título (primeira letra de cada palavra maiúscula), devolvendo o resultado. normalizar_nome(" ana MARIA ") deve devolver "Ana Maria".def normalizar_nome(texto):
# remova espaços das pontas e formate como título, numa linha só
pass
🧩 Este é um exercício com correção automática — abra no app para completá-lo e verificar.