
Interpretare i dati in formato JSON è semplice, con Python. Ma quando la mole di dati inizia ad essere importante, come uscirne facilmente?
Chi ci segue ricorderà come, in diverse occasioni, abbiamo utilizzato Python per trasformare dati in formato JSON in liste e dizionari più comodamente accessibili e manipolabili.
Oggi analizzeremo IL programma, vale a dire il sistema-base necessario per imparare a manipolare i files JSON.
Buona lettura!
Il programma
In pratica, il problema fondamentale consiste nel caricare / salvare un file nel formato corretto, e tradurlo durante la lettura / scrittura, dopo l’elaborazione delle informazioni.
Vediamo un semplice programma che esegua entrambe queste funzioni.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import json destinazioni = [] elem = {} with open("Sigle_IATA_Aeroporti.txt", 'r', encoding='utf-8') as infile: for line in infile: # print(line) line = line.split(", ") #line = str(line[0].split(" – ")) line = line[0].split(" – ") #print(line) elem['codice'] = str(line[0].split()) elem['citta'] = str(line[1].split()) #print(elem) destinazioni.append(elem) elem = {} # Salvare il dizionario su un file JSON with open('dati.json', 'w', encoding='utf-8') as f: json.dump(destinazioni, f, ensure_ascii=False, indent=4) # indent=4 per formattazione """ # Caricare il dizionario da un file JSON with open('dati.json', 'r', encoding='utf-8') as f: dizionario_caricato = json.load(f) print(dizionario_caricato) """ |
Innanzi tutto definiamo una lista contenente le destinazioni, ed un dizionario che associ la sigla con la destinazione.
Immaginiamo poi di avere un file in formato TXT contenente le seguenti informzioni:
|
1 2 3 4 |
AAE – Annaba, Algeria – Les Salines AAL – Aalborg, Denmark – Aalborg AAR – Aarhus, Denmark – Tirstrup --- e così via |
E’ facile notare che le “colonne” sono rappresentate dalla sigla IATA di riferimento, la localita, la nazione e il nome dell’aeroporto.
I campi sono separati da virgole, quindi è semplice crearae una routine di lettura ed estrazione.
- Eseguiamo uno split della variabile letta dal file sulla virgola: otterremo una lista di tre elementi.
- Eseguiamo un secondo split sul trattino separatore, ma solo sul primo elemento della lista (elemento “zero”), ottenendo così due oggetti.
- Gli oggetti sono esattamente quelli che ci interessano. Li salviamo quindi in un dizzionario (ricordiamoci di trasformare gli elementi in stringhe!)
- Appendiamo questa voce del dizionario alla lista destinazioni, predisposta in precedenza
- Azzeriamo il dizionario, per poter esseguire lo stesso lavoro su tutte le righe del file TXT.
Alla fine della lettura del file TXT, la nostra lista destinazione dovrebbe contenere n oggetti di tipo dizionario, ciascuno con le chiavi ‘codice’ e ‘città’.
Le due righe successive si incaricano del savataggio: eseguono il dump (json.dump()) della lista destinazioni, utilizzano la codifica utf-8, il formato json e una indentazione di 4 spazi.
Et voila, il nostro file json è stato creato.
Ma come fare per ricaricarlo?
Utilizziamo la funzione with open(“nomefile.json” ecc. ecc), stavolta in lettura, sul file che abbiamo appena creato, ed il metodo json.load() per inserire le informazioni in una struttura apposita, cjhe nell’esempio abbiamo chiamato banalmente dizionario_caricato.
Infine, per sapere cosa contenga il dizionario_caricato, basta eseguire una print sull’oggetto.
I più pigri tra i lettori già si staranno preoccupando… E se io avessi già un file .json e dovessi lavorarci su, come faccio?
Semplice: si legge il file, si adotta il metodo json.load() e si analizza la struttura utilizzata per il caricamento. Alla fin fine, si tratta sempre di liste e dizionari… e potreste caricare il file .json con un browser web per avere un’idea delle informazioni che avete a disposizione.
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
- Raspberry PI 5
- Raspberry PI 400
- Raspberry PI Pico
- Programmiamo il Pico