quarta-feira, 22 de junho de 2011

Função para validar CPF e CNPJ (Python)

#!/usr/bin/env python
# coding: utf-8
# is_brId.py 20080218 AF
# atualizado 20080429 AF

import sys

def is_brId(value, force_cnpj=False):
def calcdv(numb):
result = int()
seq = reversed(((range(9, id_type[1], -1)*2)[:len(numb)]))
for digit, base in zip(numb, seq):
result += int(digit)*int(base)

dv = result % 11
return (dv < 10) and dv or 0

id_type = (len(value)>11 or force_cnpj) \
and ['CNPJ', 1] or ['CPF', -1]

numb, xdv = value[:-2], value[-2:]
dv1 = calcdv(numb)
dv2 = calcdv(numb + str(dv1))
return (('%d%d' % (dv1, dv2) == xdv and True or False), id_type[0])

if __name__ == '__main__':
try:
id = sys.argv[1]
except IndexError:
print 'use: %s [CPF|CNPJ]' % sys.argv[0]
else:
print is_brId(id)

Nenhum comentário:

Postar um comentário