Normalizar CPFs antes de salvá-los no banco de dados é essencial para garantir consistência e evitar duplicidades. Este método é o mais eficaz porque utiliza expressões regulares para remover caracteres inválidos e padroniza o formato, garantindo que todos os CPFs sejam armazenados de forma uniforme.
Para normalizar CPFs, precisamos da biblioteca re para trabalhar com expressões regulares. Esta biblioteca já vem incluída no Python, então não há necessidade de instalação adicional.
import re
A função abaixo remove caracteres não numéricos do CPF e retorna apenas os dígitos. Ela utiliza expressões regulares para substituir qualquer caractere que não seja um número por uma string vazia.
def normalizar_cpf(cpf):
"""Normaliza um CPF, removendo caracteres não numéricos."""
if cpf is None:
return None
# Remove todos os caracteres que não são dígitos
cpf_limpo = re.sub(r'[^0-9]', '', cpf)
return cpf_limpo
Para normalizar múltiplos CPFs, podemos aplicar a função a uma lista. O código abaixo demonstra como processar uma lista de CPFs e retornar uma nova lista com os valores normalizados.
def normalizar_lista_cpfs(lista_cpfs):
"""Normaliza uma lista de CPFs."""
return [normalizar_cpf(cpf) for cpf in lista_cpfs]
Antes de salvar os CPFs normalizados no banco de dados, é recomendável validar se eles têm 11 dígitos (o tamanho padrão de um CPF). O código abaixo adiciona esta validação.
def normalizar_e_validar_cpf(cpf):
"""Normaliza e valida um CPF, garantindo que tenha 11 dígitos."""
cpf_limpo = normalizar_cpf(cpf)
if cpf_limpo and len(cpf_limpo) == 11:
return cpf_limpo
return None
Veja abaixo uma tabela com exemplos de CPFs antes e depois da normalização:
| CPF Original | CPF Normalizado |
|---|---|
| 123.456.789-09 | 12345678909 |
| 98765432100 | 98765432100 |
| 123-456-789-09 | 12345678909 |
| 12.345.678/0001-90 | 12345678000190 |
Com este script Python, você automatiza a normalização de CPFs em segundos, evitando erros manuais e garantindo que todos os dados sejam armazenados de forma consistente no banco de dados. A utilização de expressões regulares torna o processo rápido e confiável, mesmo para grandes volumes de dados.