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.
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()
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()))
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')
| 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 |
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
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.