gershwin.pages.dev

Como corrigir CPFs com dígitos trocados usando um script Python?

Corrigir CPFs com dígitos trocados manualmente é uma tarefa tediosa e propensa a erros. Com um script Python, você automatiza a validação e correção, garantindo precisão e economizando tempo em processamentos em massa.

Pré-requisitos

Passo 1: Criar o script de validação e correção

Primeiro, crie um arquivo Python chamado corrigir_cpfs.py. Este script irá ler um arquivo CSV, validar os CPFs e corrigir os dígitos verificadores quando necessário.

import csv

def calcular_digito_verificador(cpfs):
    def digito_verificador(cpf):
        if len(cpf) != 9:
            return None
        # Primeiro dígito
        soma = sum(int(cpf[i]) * (10 - i) for i in range(9))
        resto = soma % 11
        dv1 = 0 if resto < 2 else 11 - resto
        # Segundo dígito
        soma = sum(int(cpf[i]) * (11 - i) for i in range(9)) + dv1 * 2
        resto = soma % 11
        dv2 = 0 if resto < 2 else 11 - resto
        return f"{dv1}{dv2}"

    corrigidos = []
    for cpf in cpfs:
        cpf_limpo = ''.join(filter(str.isdigit, cpf))
        if len(cpf_limpo) == 9:
            dv = digito_verificador(cpf_limpo)
            if dv:
                corrigidos.append(f"{cpf_limpo}{dv}")
        else:
            corrigidos.append(cpf)
    return corrigidos

def processar_arquivo(input_file, output_file):
    with open(input_file, newline='') as csvfile:
        reader = csv.reader(csvfile)
        cpfs = [row[0] for row in reader]
    cpfs_corrigidos = calcular_digito_verificador(cpfs)
    with open(output_file, 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        for cpf in cpfs_corrigidos:
            writer.writerow([cpf])

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 3:
        print("Uso: python corrigir_cpfs.py  ")
    else:
        processar_arquivo(sys.argv[1], sys.argv[2])
        print("CPFs processados e salvos em:", sys.argv[2])

Passo 2: Executar o script

Com o script criado, execute-o via linha de comando, informando o arquivo CSV de entrada e o nome do arquivo de saída desejado.

python corrigir_cpfs.py cpfs_entrada.csv cpfs_corrigidos.csv

Exemplo Prático

Veja como o script processa uma lista de CPFs com e sem dígitos verificadores.

CPF de Entrada CPF Corrigido
123.456.789 123.456.789-09
98765432 98765432-00
111.444.777 111.444.777-35
55566699 55566699-28

Conclusão

Com este script Python, você automatiza a correção de CPFs com dígitos trocados em segundos, garantindo precisão e eliminando erros manuais em grandes volumes de dados.