gershwin.pages.dev

Como criar um script Python para normalizar CPFs antes de salvar no banco?

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.

Pré-requisitos

Passo 1: Importar bibliotecas necessárias

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

Passo 2: Criar função de normalização

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

Passo 3: Aplicar a função em uma lista de CPFs

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]

Passo 4: Validar e salvar no banco

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

Exemplo Prático

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

Conclusão

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.