Riferimenti: SoftPython - formati 3
Esc
Summer School Data Science 2023 - Modulo 1 informatica: Moodle
Docente: David Leoni david.leoni@unitn.it
Esercitatore: Luca Bosotti luca.bosotti@studenti.unitn.it
JSON¶file di testo formato più elaborato ad albero profondità arbitraria schema non necessario molto diffuso in applicazioni web Riferimenti: |
[
{
"name": "Grazioli",
"address": "Piazza Grazioli - Lavis",
"slots": 7,
"position": [
46.139732902099794,
11.111516155225331
]
},
{
"name": "Pressano",
"address": "Piazza della Croce - Pressano",
"slots": 5,
"position": [
46.15368174037716,
11.106601229430453
]
}
]
|
import json
from pprint import pprint
with open('bike-sharing-lavis.json',
encoding='utf-8') as f:
contenuto_python = json.load(f)
pprint(contenuto_python)
[{'address': 'Piazza Grazioli',
'bikes': 3,
'name': 'Grazioli',
'position': [46.139, 11.111],
'slots': 7},
{'address': 'Piazza della Croce',
'bikes': 2,
'name': 'Pressano',
'position': [46.153, 11.106],
'slots': 5},
.
.
]
|
JSON E Python 1/2¶
|
contenuto_python[0]
{'address': 'Piazza Grazioli',
'bikes': 3,
'name': 'Grazioli',
'position': [46.139, 11.111],
'slots': 7}
contenuto_python[0]['address']
'Piazza Grazioli'
contenuto_python[0]['position']
[46.139732902099794, 11.111516155225331]
File di testo contenente una sequenza di linee
Si può trovare per file grossi o in streaming
{"nome": "Mario", "cognome":"Rossi"}
{"nome": "Paolo", "cognome":"Bianchi"}
{"nome": "Luca", "cognome":"Verdi"}
{"nome": "Mario", "cognome":"Rossi"}
{"nome": "Paolo", "cognome":"Bianchi"}
{"nome": "Luca", "cognome":"Verdi"}
import json
with open('./impiegati.jsonl', encoding='utf-8',) as f:
i = 0
for linea_testo in f: # interpreta come file di testo
contenuto_python = json.loads(linea_testo) # converte linea di testo
# in vero oggetto python
print('Oggetto ', i)
print(contenuto_python)
i = i + 1
Oggetto 0 {'nome': 'Mario', 'cognome': 'Rossi'} Oggetto 1 {'nome': 'Paolo', 'cognome': 'Bianchi'} Oggetto 2 {'nome': 'Luca', 'cognome': 'Verdi'}
Formato ad albero, più complesso dei json
Tipicamente fornito di schema
Per scansionare XML e HTML in Python:
|
<div class="moodbo text-white">
<div>
<h4 class="headline">
Coppa del Mondo di Snowboard
</h4>
<span class="abc">14/12/2017</span>
<span class="moodboard">
<span class="icon fz20"></span>
Passo Costalunga
</span>
</div>
<div class="text-right">
<a href="visit">
<span class="icon fz30">
</span>
</a>
</div>
</div>
|