1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 |
- 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).