gershwin.pages.dev

Como validar CPF em array de strings com Python list comprehension?

Validar um CPF (Cadastro de Pessoas Físicas) manualmente em uma lista de dados pode ser uma tarefa demorada e propensa a erros. Utilizar Python com list comprehension é a forma mais eficiente e concisa de automatizar este processo, garantindo precisão e economia de tempo.

Pré-requisitos

Implementando a Validação de CPF com List Comprehension

Para validar CPFs em uma lista de strings, primeiro é necessário criar uma função que implemente o algoritmo de validação do CPF. Em seguida, usaremos list comprehension para aplicar esta função a cada elemento do array.

def valida_cpf(cpf):
    # Remove caracteres não numéricos
    cpf = ''.join(filter(str.isdigit, cpf))
    
    # Verifica se o CPF tem 11 dígitos
    if len(cpf) != 11:
        return False
    
    # Verifica se todos os dígitos são iguais
    if cpf == cpf[0] * 11:
        return False
    
    # Calcula o 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
    
    # Calcula o 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
    
    # Compara os dígitos verificadores calculados com os informados
    return digito1 == int(cpf[9]) and digito2 == int(cpf[10])

# Array de CPFs em strings
cpfs = ['123.456.789-09', '111.444.777-35', '529.982.247-25', '000.000.000-00']

# Validação usando list comprehension
cpfs_validos = [cpf for cpf in cpfs if valida_cpf(cpf)]

print(cpfs_validos)

Exemplo Prático

CPF de Entrada Válido?
123.456.789-09 Não
111.444.777-35 Sim
529.982.247-25 Sim
000.000.000-00 Não

Conclusão

Com este método, você automatiza a validação de CPFs em segundos, evitando erros manuais e garantindo a integridade dos dados do seu array de strings. A combinação de uma função robusta com list comprehension do Python oferece uma solução elegante e eficiente para esta tarefa comum de processamento de dados.