Come decodificare Codice Fiscale in informazioni personali in Python

Il codice fiscale è un identificatore personale utilizzato in Italia per vari scopi amministrativi e fiscali. Questo codice alfanumerico di 16 caratteri può essere decodificato per estrarre informazioni come il nome, il cognome, la data di nascita e il luogo di nascita di una persona. In questo articolo, esploreremo come utilizzare Python per convertire un codice fiscale in dati reali.

Struttura del Codice Fiscale

Un codice fiscale italiano è composto da 16 caratteri che rappresentano le seguenti informazioni:

  • Cognome: 3 lettere
  • Nome: 3 lettere
  • Anno di nascita: 2 cifre
  • Mese di nascita: 1 lettera
  • Giorno di nascita e sesso: 2 cifre (il giorno è aumentato di 40 per le donne)

Script in Python

import string

# Mappa per i mesi di nascita
MONTH_MAP = {
    'A': 'Gennaio', 'B': 'Febbraio', 'C': 'Marzo', 'D': 'Aprile', 'E': 'Maggio',
    'H': 'Giugno', 'L': 'Luglio', 'M': 'Agosto', 'P': 'Settembre', 'R': 'Ottobre',
    'S': 'Novembre', 'T': 'Dicembre'
}

# Esempio di mappa per i comuni (da completare con un database reale)
COMUNE_MAP = {
    'H501': 'Roma',
    'Z404': 'New York',
    'D612': 'Milano',
    'F205': 'Napoli',
    'L736': 'Torino',
    'B354': 'Bari',
    'A662': 'Bologna',
    'G273': 'Firenze',
    'E463': 'Genova',
    'M403': 'Palermo',
}

# Esempi di nomi e cognomi (da completare con un database reale)
NOMI_MAP = {
    'RSS': 'Rossi',
    'BNC': 'Bianchi',
    'VRD': 'Verdi',
    'NTL': 'Neri',
    'BLU': 'Blu',
    'CST': 'Cristian'  # Aggiunto Cristian
    # Aggiungi altri nomi qui
}

COGNOMI_MAP = {
    'MRA': 'Mario',
    'LUI': 'Luigi',
    'FRN': 'Francesco',
    'GIO': 'Giovanni',
    'CLA': 'Claudio',
    'GLL': 'Gallo'  # Aggiunto Gallo
    # Aggiungi altri cognomi qui
}

def parse_codice_fiscale(codice_fiscale):
    if len(codice_fiscale) != 16:
        raise ValueError("Il codice fiscale deve essere lungo 16 caratteri.")
    
    cognome_code = codice_fiscale[:3]
    nome_code = codice_fiscale[3:6]
    anno = codice_fiscale[6:8]
    mese = codice_fiscale[8]
    giorno_sesso = int(codice_fiscale[9:11])
    comune_code = codice_fiscale[11:15]
    controllo = codice_fiscale[15]

    if mese in MONTH_MAP:
        mese_str = MONTH_MAP[mese]
    else:
        raise ValueError("Lettera del mese non valida.")
    
    if giorno_sesso > 40:
        giorno = str(giorno_sesso - 40).zfill(2)
        sesso = 'Femmina'
    else:
        giorno = str(giorno_sesso).zfill(2)
        sesso = 'Maschio'

    anno_corrente = 2023
    anno_nascita = int(anno)
    secolo = (anno_corrente // 100) * 100
    if anno_nascita > anno_corrente % 100:
        anno_nascita += secolo - 100
    else:
        anno_nascita += secolo
    
    if comune_code in COMUNE_MAP:
        comune_str = COMUNE_MAP[comune_code]
    else:
        comune_str = comune_code
    
    if cognome_code in COGNOMI_MAP:
        cognome_str = COGNOMI_MAP[cognome_code]
    else:
        cognome_str = cognome_code
    
    if nome_code in NOMI_MAP:
        nome_str = NOMI_MAP[nome_code]
    else:
        nome_str = nome_code

    return {
        'Cognome': cognome_str,
        'Nome': nome_str,
        'Anno di nascita': anno_nascita,
        'Mese di nascita': mese_str,
        'Giorno di nascita': giorno,
        'Sesso': sesso,
        'Comune di nascita': comune_str,
        'Carattere di controllo': controllo
    }

def stampa_dati(dati):
    print(f"Cognome: {dati['Cognome']}")
    print(f"Nome: {dati['Nome']}")
    print(f"Data di nascita: {dati['Giorno di nascita']} {dati['Mese di nascita']} {dati['Anno di nascita']}")
    print(f"Sesso: {dati['Sesso']}")
    print(f"Comune di nascita: {dati['Comune di nascita']}")
    print(f"Carattere di controllo: {dati['Carattere di controllo']}")

if __name__ == "__main__":
    codice_fiscale = input("Inserisci il codice fiscale: ")
    try:
        dati = parse_codice_fiscale(codice_fiscale)
        stampa_dati(dati)
    except ValueError as e:
        print(f"Errore: {e}")

Ecco una spiegazione dello script:

Importazione delle Librerie

Per gestire l’anno corrente, usiamo la libreria datetime. Questa libreria ci permette di ottenere la data e l’ora correnti, necessarie per calcolare l’anno di nascita.

Definizione delle Tabelle di Conversione

Abbiamo definito diverse tabelle di conversione come dizionari:

  • Mappa dei Mesi: Questa mappa associa una lettera (che rappresenta il mese) al nome del mese in italiano. Ad esempio, ‘A’ sta per Gennaio, ‘B’ per Febbraio, e così via.
  • Mappa dei Comuni: Questa mappa associa un codice a quattro caratteri al nome di un comune. Ad esempio, ‘H501’ corrisponde a Roma, ‘D612’ a Milano, e così via. Questa mappa è solo un esempio e dovrebbe essere completata con un database reale.
  • Mappa dei Nomi e dei Cognomi: Questi dizionari associano un codice di tre caratteri a nomi e cognomi comuni. Ad esempio, ‘RSS’ corrisponde a Rossi e ‘MRA’ a Mario. Anche queste mappe sono parziali e dovrebbero essere ampliate.

Funzione di Parsing del Codice Fiscale

La funzione parse_codice_fiscale prende un codice fiscale come input e lo analizza per estrarre le informazioni personali. Ecco come funziona:

  • Verifica della Lunghezza: Controlliamo che il codice fiscale sia lungo esattamente 16 caratteri. Se non lo è, solleviamo un errore.
  • Estrazione dei Codici: Il codice fiscale è suddiviso in parti:
    • I primi tre caratteri rappresentano il cognome.
    • I successivi tre caratteri rappresentano il nome.
    • I due caratteri seguenti rappresentano l’anno di nascita.
    • Il nono carattere rappresenta il mese di nascita.
    • I due caratteri successivi rappresentano il giorno di nascita e il sesso.
    • I quattro caratteri seguenti rappresentano il codice del comune di nascita.
    • L’ultimo carattere è il carattere di controllo.
  • Conversione del Mese: Utilizziamo la mappa dei mesi per convertire la lettera del mese in nome del mese. Se la lettera non è valida, restituiamo ‘Mese sconosciuto’.
  • Calcolo del Giorno e Sesso: Se il valore del giorno è maggiore di 40, significa che la persona è di sesso femminile e dobbiamo sottrarre 40 dal valore del giorno. Altrimenti, è di sesso maschile e il giorno resta invariato.
  • Calcolo dell’Anno di Nascita: Usando l’anno corrente, calcoliamo l’anno di nascita. Se il valore dell’anno nel codice fiscale è maggiore dell’anno corrente, significa che la persona è nata nel secolo precedente; altrimenti, è nata nel secolo corrente.
  • Conversione del Comune: Utilizziamo la mappa dei comuni per ottenere il nome del comune corrispondente al codice. Se il codice non è valido, restituiamo ‘Comune sconosciuto’.
  • Conversione di Nome e Cognome: Usando le mappe dei nomi e dei cognomi, otteniamo il nome e il cognome corrispondenti ai codici. Se i codici non sono presenti nella mappa, utilizziamo i codici stessi.

Restituzione dei Dati

La funzione restituisce un dizionario che contiene tutte le informazioni decodificate dal codice fiscale. Questo dizionario include il cognome, il nome, l’anno di nascita, il mese di nascita, il giorno di nascita, il sesso, il comune di nascita e il carattere di controllo.

Avvio script in Python:

Prima di tutto, devi salvare lo script Python in un file con estensione .py.

Apri un editor di testo: Puoi usare un editor di testo come Visual Studio Code, Sublime Text, Notepad++ o anche il semplice Blocco Note di Windows.

  1. Copia e incolla lo script: Incolla il codice Python che hai creato (compreso il codice per la funzione parse_codice_fiscale e le mappe di conversione) in un nuovo file.
  2. Salva il file: Salva il file con un nome significativo, ad esempio codice_fiscale_parser.py.

Installare Python

Se non hai ancora Python installato sul tuo computer, devi prima installarlo. Ecco come:

  • Windows/Mac/Linux:
    1. Vai al sito ufficiale di Python: python.org.
    2. Scarica l’ultima versione di Python.
    3. Segui le istruzioni per l’installazione. Assicurati di selezionare l’opzione “Add Python to PATH” durante l’installazione su Windows.

Avviare lo Script:

Una volta che hai Python installato e il file .py pronto, segui questi passaggi per avviare lo script:

Windows:

  • Apri il Prompt dei Comandi:
    • Premi Win + R, digita cmd, e premi Invio.
  • Naviga nella directory dove hai salvato il file:
    • Usa il comando cd per cambiare directory. Ad esempio, se il file è sul desktop, digita cd Desktop e premi Invio.
  • Esegui il file Python:
    • Digita python codice_fiscale_parser.py e premi Invio.

Mac/Linux:

  • Apri il Terminale:
    • Puoi trovare il terminale nelle applicazioni o usando la ricerca del sistema operativo.
  • Naviga nella directory dove hai salvato il file:
    • Usa il comando cd come su Windows. Ad esempio, cd ~/Desktop se il file è sul desktop.
  • Esegui il file Python:
    • Digita python3 codice_fiscale_parser.py e premi Invio. (Su alcuni sistemi, potrebbe essere necessario usare python al posto di python3.)

Ecco un esempio in python:

ECCO IL RISULTATO FINALE DEL CALCOLO ESEGUITO CON I DATI DELLO SCRIPT INSERITI.

Ulteriori informazioni:

Il codice consente di trasformare un codice fiscale alfanumerico in informazioni leggibili come nome, cognome, data di nascita, sesso e comune di nascita, utilizzando tabelle di conversione e calcoli basati su regole predefinite. Ovviamente i dati per completarlo vanno inseriti tutti nel codice python. Questo è solo un esempio.

Lascia un commento