Contenuto cancellato Contenuto aggiunto
Riga 120:
</pre>
--[[User:Alex brollo|Alex brollo]] ([[User talk:Alex brollo|disc.]]) 23:45, 12 gen 2009 (CET)
 
== Indicizzazione python dei dump xml di wiki ==
 
caro Qualc1,
non si sa mai che trovi qualcosa di buono in questo breve script python, che legge sequenzialmente il dump xml di una wiki e indicizza le singole pagine nel fle, producendo una lista elementi, uno per pagna, che sono a loro volta liste di tre elementi:
#l'offset della pagina, da usare con il metodo seek() dei file;
#la lunghezza della pagina in byte, da usare con il parametro opzionale nel metodo read() dei file;
#il titolo della pagina.
Con questi elementi, il contenuto di qualsiasi pagina scritto nel file xml viene recuperato istantaneamente; immaginando che ci sia in memoria la lista indice ''l'' e che in ''f'' sia aperto in lettura il file itwikisource.xml, i comando che restituiscono la pagina completa ''i'' sono semplicemente:
 
<pre>f.seek(l[i][0])
pagina=f.read(l[i][1])</pre>
 
Ecco il listato:
<pre>def index (filei="itwikisource.xml"):
fi=open(filei)
pos=0
l=[]
for i in fi:
if "<page>" in i:
posi=pos
if "</page>" in i:
lenf=pos-posi+len(i)
l.append([posi,lenf])
pos=pos+len(i)
fi.close()
print "eseguito parsing"
for i in range(len(l)):
f.seek(l[i][0])
pagina=f.read(l[i][1])
tipo=find_stringa(pagina,"<title>","</title>")
l[i].append(tipo)
print "eseguito caricamento titoli pagina"
return l</pre>
 
''find_stringa'' è una routine per ''RE-ignorants'' che mi sembra ti ho già passato, altrimenti la trovi sotto [[Utente:Alebot/Scripts]]. Non lo pubblico altrove, per ora, perchè è impresentabile per assenza di doc e perchè non saprei se può interessare a qualcuno! Ciao! --[[User:Alex brollo|Alex brollo]] ([[User talk:Alex brollo|disc.]]) 11:20, 15 gen 2009 (CET)