DNI D 10 letters = { 0: "T", 1: "R", 2: "W", 3: "A", 4: "G", 5: "M", 6: "Y", 7: "F", 8: "P", 9: "D", 10: "X", 11: "B", 12: "N", 13: "J", 14: "Z", 15: "S", 16: "Q", 17: "V", 18: "H", 19: "L", 20: "C", 21: "K", 22: "E", } dni_number = id_number.name[0:8] dni_letter = id_number.name[ len(id_number.name) - 1 : len(id_number.name) ] if dni_number.isdigit() and not dni_letter.isdigit(): if letters.get(int(dni_number) % 23) != dni_letter.upper(): failed = True else: failed = True Spanish Residence permit N 30 permit_first_letter=id_number.name[0:1] permit_last_letter = id_number.name[ len(id_number.name) - 1 : len(id_number.name) ] if (permit_first_letter.upper() in ['X','Y']) and id_number.name[1:8].isdigit() and not permit_last_letter.isdigit(): failed = False else: failed = True 02 05 05 03 06 06 10