Importar dados de arquivos CSV é uma tarefa comum, mas lidar com CPFs inválidos pode causar erros e inconsistências nos seus dados. Este método apresenta uma solução robusta e automatizada para filtrar CPFs inválidos durante a importação, garantindo a integridade dos seus dados.
Primeiro, vamos criar um script Python que valida CPFs usando o algoritmo oficial. O script irá filtrar apenas CPFs válidos do seu arquivo CSV.
import csv
def valida_cpf(cpf):
cpf = ''.join(filter(str.isdigit, cpf))
if len(cpf) != 11:
return False
if cpf == cpf[0] * 11:
return False
# Cálculo do primeiro dígito verificador
soma = sum(int(digit) * (10 - i) for i, digit in enumerate(cpf[:9]))
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
# Cálculo do segundo dígito verificador
soma = sum(int(digit) * (11 - i) for i, digit in enumerate(cpf[:10]))
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
return str(digito1) == cpf[9] and str(digito2) == cpf[10]
def filtra_cpfs_validos(input_file, output_file, cpf_column):
with open(input_file, 'r', encoding='utf-8') as infile:
reader = csv.DictReader(infile)
fieldnames = reader.fieldnames
with open(output_file, 'w', encoding='utf-8', newline='') as outfile:
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
if valida_cpf(row[cpf_column]):
writer.writerow(row)
# Uso: filtra_cpfs_validos('arquivo_entrada.csv', 'arquivo_saida.csv', 'cpf')
Salve o código acima em um arquivo chamado valida_cpf.py. Execute o script na linha de comando, especificando o arquivo de entrada, saída e o nome da coluna com CPFs.
python valida_cpf.py
Ou, se preferir integrar diretamente no seu código:
from valida_cpf import filtra_cpfs_validos
filtra_cpfs_validos('dados.csv', 'dados_filtrados.csv', 'cpf')
Agora que você tem um arquivo CSV com apenas CPFs válidos, pode importá-lo normalmente para o seu sistema ou banco de dados sem se preocupar com dados inválidos.
# Exemplo de importação usando pandas
import pandas as pd
df = pd.read_csv('dados_filtrados.csv')
# Continue com sua análise ou processamento
| CPF (Entrada) | Válido? | CPF (Saída Filtrada) |
|---|---|---|
| 12345678901 | Não | - |
| 11111111111 | Não | - |
| 935.412.860-70 | Sim | 93541286070 |
| 123.456.789-09 | Não | - |
| 98765432100 | Sim | 98765432100 |
Com este método, você automatiza completamente o processo de filtragem de CPFs inválidos durante a importação de CSV. O script Python garante que apenas dados válidos sejam processados, economizando tempo e eliminando erros manuais no seu fluxo de trabalho.