Archivo de la etiqueta: dni

Dni Python

Código Python para comprobar si un DNI, NIF o NIE es válido

def validoDNI(dni):
    tabla = "TRWAGMYFPDXBNJZSQVHLCKE"
    dig_ext = "XYZ"
    reemp_dig_ext = {'X':'0', 'Y':'1', 'Z':'2'}
    numeros = "1234567890"
    dni = dni.upper()
    if len(dni) == 9:
        dig_control = dni[8]
        dni = dni[:8]
        if dni[0] in dig_ext:
            dni = dni.replace(dni[0], reemp_dig_ext[dni[0]])
        return len(dni) == len([n for n in dni if n in numeros]) \
            and tabla[int(dni)%23] == dig_control
    return False

Eso comprueba que:

  • Tenga una longitud de 9 dígitos, todos numéricos menos el primero (extranjeros) y el último (control) que pueden estar entre unas letras concretas.
  • Si es extranjero se sustituye la primera letra por su número correspondiente antes de calcular el dígito de control.
  • Se comprueba el dígito de control (última cifra).

Devuelve True o False.

Más información sobre el cálculo del dígito de control del NIF/NIE (Ministerio del Inerior, interior.gob.es).