ragfica.pages.dev

Como criar um script para migrar CPF de sistema legado com encoding antigo?

Quando se lida com sistemas legados, o maior desafio é frequentemente o encoding incorreto dos dados, especialmente em campos como o CPF. Este método oferece uma solução robusta e eficiente para converter e migrar CPFs sem perder informações ou introduzir erros.

Pré-requisitos

Passo 1: Ler o arquivo com encoding antigo

Primeiro, é necessário abrir o arquivo de texto que contém os CPFs no encoding antigo. O Python oferece suporte nativo para isso através da função open() com o parâmetro encoding.

with open('cpfs_antigos.txt', 'r', encoding='iso-8859-1') as arquivo:
    cpfs = arquivo.readlines()

Passo 2: Limpar e padronizar os CPFs

CPFs podem vir com pontuações, espaços ou caracteres especiais. É essencial removê-los para garantir consistência.

def limpar_cpf(cpf):
    return ''.join(filter(str.isdigit, cpf.strip()))

Passo 3: Converter para o encoding desejado

Após a limpeza, converta os CPFs para o encoding desejado (ex: UTF-8) e salve em um novo arquivo.

with open('cpfs_convertidos.txt', 'w', encoding='utf-8') as novo_arquivo:
    for cpf in cpfs:
        cpf_limpo = limpar_cpf(cpf)
        novo_arquivo.write(cpf_limpo + '\n')

Exemplo Prático

CPF no sistema legado (ISO-8859-1) CPF após conversão (UTF-8)
123.456.789-09 12345678909
987.654.321-00 98765432100
111.222.333-44 11122233344

Passo 4: Validar os CPFs (opcional)

Para garantir a integridade dos dados, é recomendável validar os CPFs após a conversão. Abaixo está uma função simples para validação do dígito verificador.

def validar_cpf(cpf):
    if len(cpf) != 11:
        return False
    # Cálculo dos dígitos verificadores omitido por brevidade
    return True

Conclusão

Com este script, você automatiza a migração de CPFs de sistemas legados, garantindo que os dados sejam convertidos corretamente e prontos para uso em sistemas modernos. Esta abordagem elimina erros manuais e acelera significativamente o processo de migração.