2 import xml.etree.ElementTree
as ET
10 estrae dal file XML i dati dell'elenco prezzi
11 I dati estratti avranno il formato seguente:
21 artList = { codice : articolo, ... }
23 superCatList = { codice : descrizione, ... }
24 catList = { codice : descrizione, ... }
28 'superCategorie': superCatList,
47 intestazione = root.find(
'intestazione')
48 autore = intestazione.attrib[
'autore']
51 dettaglio = intestazione.find(
'dettaglio')
52 anno = dettaglio.attrib[
'anno']
53 area = dettaglio.attrib[
'area']
55 copyright = intestazione.find(
'copyright')
56 ccType = copyright.attrib[
'tipo']
57 ccDesc = copyright.attrib[
'descrizione']
61 titolo =
"Elenco prezzi - " + area +
" - anno " + anno +
"\n"\
62 +
"Copyright: " + ccType +
" - " + ccDesc
64 contenuto = root.find(
'Contenuto')
65 articoli = contenuto.findall(
'Articolo')
71 for articolo
in articoli:
72 codice = articolo.attrib[
'codice']
75 codiceSplit = codice.split(
'.')
76 codiceSuperCat = codiceSplit[0]
77 codiceCat = codiceSuperCat +
'.' + codiceSplit[1]
80 superCat = articolo.find(
'tipo').text
81 cat = articolo.find(
'capitolo').text
84 if not codiceSuperCat
in superCatList:
85 superCatList[codiceSuperCat] = superCat
86 if not codiceCat
in catList:
87 catList[codiceCat] = cat
89 voce = articolo.find(
'voce').text
92 art = articolo.find(
'articolo').text
95 desc = voce +
'\n- ' + art
98 desc = desc.replace(
'\t',
' ').replace(
'è',
'è').replace(
99 '°',
'°').replace(
'Ã',
'à').replace(
' $',
'')
101 desc = desc.replace(
' ',
' ')
102 while '\n\n' in desc:
103 desc = desc.replace(
'\n\n',
'\n')
105 um = articolo.find(
'um').text.split(
'(')[-1][: -1]
106 prezzo = articolo.find(
'prezzo').attrib[
'valore']
111 if prezzo
is not None:
112 if '.' not in prezzo:
113 prezzo = prezzo +
'.0'
114 prSplit = prezzo.split(
'.')
116 for p
in prSplit[0:-1]:
118 prezzo +=
'.' + prSplit[-1]
119 prezzo = float(prezzo)
120 mdo = float(articolo.find(
'mo').text) / 100
121 oneriSic = float(articolo.find(
'sicurezza').text)
130 'sicurezza': oneriSic
137 'superCategorie': superCatList,
138 'categorie': catList,