realizzare dataset partendo dai file xls pubblicati nella sezione Amministrazione Trasparente

6 views
Skip to first unread message

pablopers

unread,
Jul 2, 2018, 3:28:55 AM7/2/18
to opendatasicilia

Partendo dallo spunto creato da due precedenti richieste, per Spesapubblica e per OpenCup, i cui script consentono di scaricare dati dai due portali Spesapubblica e Opencup, filtrarli e trasformarli, è nata l'idea di fare una cosa simile ma con i file pubblicati in formato tabellare sulla sezione amministrazione trasparente del portale istituzionale della Città Metropolitana di Napoli.

Il punto di partenza è un vecchio server Windows, dal quale attraverso uno script richiamo il file (generalmente un xls, xlsx o un ods) e lo trasformo in csv e json (proprio come facevo con spesapubblica e opencup)

curl http://192.168.x.x/assenze2018.xlsx -o "$cartella"/assenze2018.xlsx

 

lo trasformo in csv 

<"$cartella"/assenze2018.xlsx in2csv -I -f xlsx >"$cartella"/assenze2018.csv

 

nel caso del file ods (l'equivalente dell'excel per open office) utilizzo 

soffice --headless --convert-to csv assenze2018.ods

 

trasformo il csv in json 

<"$cartella"/assenze2018.csv csvjson | jq . >"$cartella"/assenze2018.json

 

fin qui tutto bene ma controllando i files ho notato che hanno un numero lunghissimo di cifre decimali, come posso accorciarle almeno a due, tenendo conto che si tratta di percentuali? 

 

Ho anche provato in questo modo (sempre attingendo dal vecchio script di opencup)  

<"$cartella"/assenze2018.csv csvformat -d "|" -e "ISO-8859-15" >"$cartella"/assenze2018.csv

 

ma non funziona, dov'è che sbaglio? 

Grazie

Andrea Borruso

unread,
Jul 2, 2018, 3:42:12 AM7/2/18
to opendatasicilia
Ciao Pablo,
alleghi per favore il file di input e l'output che ottieni?

Grazie

pablopers

unread,
Jul 2, 2018, 3:48:02 AM7/2/18
to opendatasicilia
Eccoli! 
Grazie
assenze2018.csv
assenze2018.json

andy

unread,
Jul 2, 2018, 4:20:45 AM7/2/18
to opendatasicilia

Ciao Pablo

Ho anche provato in questo modo (sempre attingendo dal vecchio script di opencup)  

<"$cartella"/assenze2018.csv csvformat -d "|" -e "ISO-8859-15" >"$cartella"/assenze2018.csv

 

questo comando serve a fare in modo che l’output in CSV sia separato da |. Che qui non serve.
Inoltre qui il file sorgente non ha encoding “ISO-8859-15” .
Rimuoverei la riga.

Per i decimali, in questo caso puoi usare semplicemente sed e fare un trova e sostituisci che cerca numeri con struttura 0.00… e li trasforma in 0.00, via espressione regolare.

Lo script potrebbe essere

cartella="/iltuoperorso/dati

<"$cartella"/assenze2018.xlsx in2csv -I -f xlsx | sed -r 's/([0-9]+)(\.)([0-9]{2})([0-9]+)/\1\2\3/g' >"$cartella"/assenze2018.csv

<"$cartella"/assenze2018.csv csvjson | jq . >"$cartella"/assenze2018.json

Qui il ciao mondo della regex https://regex101.com/r/QTvYhe/1

L’output è qualcosa come

[
  {
    "Direzione": "Segretario Generale",
    "Gennaio % di presenza": 79.56,
    "Gennaio % di assenza": 20.43,
    "Febbraio % di presenza": 86.5,
    "Febbraio % di assenza": 13.5,
    "Marzo % di presenza": 88.18,
    "Marzo % di assenza": 11.81,
    "Aprile % di presenza": 83.68,
    "Aprile % di assenza": 16.31,
    "Maggio % di presenza": null,
    "Maggio % di assenza": null,
    "Giugno % di presenza": null,
    "Giugno % di assenza": null
  }
]

Facci sapere

--
___________________

Andrea Borruso
website: https://medium.com/tantotanto
38° 7' 48" N, 13° 21' 9" E, EPSG:4326
___________________

"cercare e saper riconoscere chi e cosa,
 in mezzo all’inferno, non è inferno, 
e farlo durare, e dargli spazio"

Italo Calvino

pablopers

unread,
Jul 2, 2018, 5:17:57 AM7/2/18
to opendatasicilia
Provato e naturalmente funziona alla perfezione!  
Tutto chiaro anche riguardo il comando che hai utilizzato.
Naturalmente, da solo non sarei mai riuscito nemmeno ad immaginarlo così! 
Grazie
Reply all
Reply to author
Forward
0 new messages