Salve!<div><br></div><div>Sto lavorando ad un progetto: scrivere un programma che traduca un file odt (open/libre office) in sphinx. I documenti odt sono salvati in file xml zippati.</div><div><br></div><div>Il lavoro sarebbe a buon punto (quasi pubblicabile) se non fosse che spesso i file odt prodotti con Libreoffice sono estremamente "sporchi".</div>
<div><br></div><div>Pensavo quindi di ripulirli prima di darli in pasto a dot2sphinx.</div><div><br></div><div>Ad esempio io vorrei che la stringa:</div><div><br></div><div>
<p style="margin:0px"><ns4:p ns4:style-name="P11"></p><p style="margin:0px">Nuove<ns4:span ns4:style-name="T28"> </ns4:span></p><p style="margin:0px">figure<ns4:span ns4:style-name="T28">  </ns4:span></p>
<p style="margin:0px">lavorative<ns4:span ns4:style-name="T28">   </ns4:span></p><p style="margin:0px">nella<ns4:span ns4:style-name="T28">    </ns4:span></p><p style="margin:0px">
società<ns4:span ns4:style-name="T28">     </ns4:span></p><p style="margin:0px">postfordista</p>
<p style="margin:0px"></ns4:p></p><div><br></div><div>diventi:</div><div><br></div><div>
<p style="margin:0px"><ns4:p ns4:style-name="P11"></p>
<p style="margin:0px">           Nuove figure  lavorative   nella    società     postfordista</p>
<p style="margin:0px">    </ns4:p></p><p style="margin:0px"><br></p><p style="margin:0px">Pensavo che le regex potessero aiutarmi. Ma quello che sono riuscito ad ottenere à:</p><p style="margin:0px"><br></p><p style="margin:0px">
Nuove     postfordista<br></p><p style="margin:0px"><br></p><p style="margin:0px">Leggendo il manuale di MB penso di aver capito dove sta il problema, ma non sono riuscito a trovare rimedio. </p><p style="margin:0px"><br>
</p><p style="margin:0px">Il programma di prova che ho scritto è:</p><p style="margin:0px"><br></p><p style="margin:0px"><br></p><p style="margin:0px">
</p>
<p style="margin:0px"><font face="courier new, monospace">from __future__ import division, print_function</font></p>
<p style="margin:0px"><font face="courier new, monospace"><br></font></p>
<p style="margin:0px"><font face="courier new, monospace">import re</font></p>
<p style="margin:0px"><font face="courier new, monospace"><br></font></p><p style="margin:0px"><font face="courier new, monospace">def cleantest(string):</font></p>
<p style="margin:0px"><font face="courier new, monospace">    """Clean test.</font></p>
<p style="margin:0px"><font face="courier new, monospace">>>> print(cleantest(u'''<ns4:p ns4:style-name="P11"></font></p>
<p style="margin:0px"><font face="courier new, monospace">    ...        Nuove<ns4:span ns4:style-name="T28"> </ns4:span>figure<ns4:span ns4:style-name="T28">  </ns4:span>lavorative<ns4:span ns4:style-name="T28">   </ns4:span>nella<ns4:span ns4:style-name="T28">    </ns4:span>società<ns4:span ns4:style-name="T28">     </ns4:span>postfordista</font></p>

<p style="margin:0px"><font face="courier new, monospace">    ... </ns4:p>'''))</font></p>
<p style="margin:0px"><font face="courier new, monospace">    <ns4:p ns4:style-name="P11"></font></p>
<p style="margin:0px"><font face="courier new, monospace">           Nuove figure  lavorative   nella    società     postfordista</font></p>
<p style="margin:0px"><font face="courier new, monospace">    </ns4:p></font></p>
<p style="margin:0px"><font face="courier new, monospace">    >>></font></p>
<p style="margin:0px"><font face="courier new, monospace">    """</font></p>
<p style="margin:0px"><font face="courier new, monospace">    SPAN = "ns4:span"</font></p>
<p style="margin:0px"><font face="courier new, monospace">    c = re.compile("\<{0} .+\>(?P<spaces>\s*)\<\/{0}\>".format(SPAN))</font></p>
<p style="margin:0px"><font face="courier new, monospace">    string = c.sub(r"\g<spaces>", string)</font></p>
<p style="margin:0px"><font face="courier new, monospace">    return string</font></p><p style="margin:0px">
</p><p style="margin:0px"><br></p><p style="margin:0px"><font face="courier new, monospace">import doctest</font></p>
<p style="margin:0px"><font face="courier new, monospace">doctest.testmod()    </font></p>
<p style="margin:0px"><br></p><p style="margin:0px"><br></p><p></p>
<p style="margin:0px">Siccome sono molto ignorante in regex, chiedo:</p><p style="margin:0px">- sono lo strumento giusto per il mio problema?</p><p style="margin:0px">- se sì, come devo modificare la funzione perché funzioni?</p>
<p style="margin:0px">- è invece meglio che mi smazzoli il file xml?</p><p></p><p style="margin:0px">Grazie per la pazienza.</p><p style="margin:0px"><br></p>
<p style="margin:0px">    </p></div>-- <br><br>Daniele<br><br><a href="http://www.fugamatematica.blogspot.com">www.fugamatematica.blogspot.com</a><br><br>    giusto!<br>    nel verso<br>    forse è perché non guardiamo le cose<br>
    Quando non ci capiamo,<br><br>
</div>