viernes, febrero 07, 2014

Calcular IBAN en Python

Por diversos motivos necesitaba calcular el código IBAN para cientos de cuentas bancarias y todo lo que veía por internet solo te lo hacia para una.. así que decidí buscar el algoritmo y hacerlo en Python, ya que así mataba 2 pájaros de un tiro, programaba en Python y resolvía el problema.

El Programa funciona para calcular cuentas bancarias de España, para otro país basta cambiar la variable cod.

El programa espera un fichero que contenga en cada línea una cuenta corriente y devuelve un fichero con la cuenta corriente, el código IBAN, el IBAN electrónico y el de papel.

 

# Calculo IBAN España
#
http://www.finanzasybanca.com/iberfinanzas/index.php/C/Codigo-Internacional-de-Cuenta-Bancaria-IBAN.html

cod = '142800'

f = open("ncc.txt")
g = open("ncciban.txt","w")
for linea in f:
    linea = linea.replace('\n', '')
   
    if linea != "":
        ncc = linea.replace(' ', '')
        #n = str(int(ncc[:4])) + ncc[4:] + cod
        #iban = 98 - (int(n) % 97)
        #ibantxt = (str(iban))[:2]

        ibantxt = (str(98 - (int(str(int(ncc[:4])) + ncc[4:] + cod) % 97)))[:2]
       
        if len(ibantxt) < 2 :
            ibantxtpapel = 'IBAN ES0' + ibantxt
            ibantxt = 'IBAN ES0' + ibantxt
        else:
            ibantxtpapel = 'IBAN ES'  + ibantxt
            ibantxt = 'IBAN ES' + ibantxt
           
        ibantxtpapel = ibantxtpapel + ' ' + ncc[:4] + ' ' + ncc[4:8] + ' ' + ncc[8:12] + ' ' + ncc[12:16] + ' ' + ncc[16:20]
        ibantxt = ibantxt + ncc
       
        #Comprobamos IBAN
       
        print('IBAN papel = ' + ibantxtpapel)
        print('IBAN electronico = ' + ibantxt)
        print('NCC = ' + linea)

        g.write(linea + ',' + ibantxt[:9] + ',' + ibantxtpapel + ',' + ibantxt + '\n')
    else :
        g.write('\n')
f.close()
g.close()