import re nondigit = re.compile('\D'); def validate_cpf(cpf): global nondigit cpf = nondigit.sub('', cpf) if len(cpf) < 11: raise Exception("CPF inválido") vcode = [] # verification digit for count in range(2): count += 1 aux = [num for num in range(2, 10 + count)] aux.reverse() cpflist = [int(digit) for digit in cpf] digit = 11 - sum(map(lambda tp: tp[0] * tp[1], zip(cpflist, aux))) % 11 digit = digit if digit <= 9 else 0 vcode.append(str(digit)) vcode = ''.join(vcode) if vcode != cpf[-2:]: raise Exception("CPF inválido") return True