[Python] regex per modificare una stringa
Daniele Zambelli
daniele.zambelli a gmail.com
Dom 11 Nov 2012 18:23:09 CET
Salve!
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.
Il lavoro sarebbe a buon punto (quasi pubblicabile) se non fosse che spesso
i file odt prodotti con Libreoffice sono estremamente "sporchi".
Pensavo quindi di ripulirli prima di darli in pasto a dot2sphinx.
Ad esempio io vorrei che la stringa:
<ns4:p ns4:style-name="P11">
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
</ns4:p>
diventi:
<ns4:p ns4:style-name="P11">
Nuove figure lavorative nella società postfordista
</ns4:p>
Pensavo che le regex potessero aiutarmi. Ma quello che sono riuscito ad
ottenere à:
Nuove postfordista
Leggendo il manuale di MB penso di aver capito dove sta il problema, ma non
sono riuscito a trovare rimedio.
Il programma di prova che ho scritto è:
from __future__ import division, print_function
import re
def cleantest(string):
"""Clean test.
>>> print(cleantest(u'''<ns4:p ns4:style-name="P11">
... 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
... </ns4:p>'''))
<ns4:p ns4:style-name="P11">
Nuove figure lavorative nella società postfordista
</ns4:p>
>>>
"""
SPAN = "ns4:span"
c = re.compile("\<{0} .+\>(?P<spaces>\s*)\<\/{0}\>".format(SPAN))
string = c.sub(r"\g<spaces>", string)
return string
import doctest
doctest.testmod()
Siccome sono molto ignorante in regex, chiedo:
- sono lo strumento giusto per il mio problema?
- se sì, come devo modificare la funzione perché funzioni?
- è invece meglio che mi smazzoli il file xml?
Grazie per la pazienza.
--
Daniele
www.fugamatematica.blogspot.com
giusto!
nel verso
forse è perché non guardiamo le cose
Quando non ci capiamo,
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20121111/7c43c101/attachment.html>
Maggiori informazioni sulla lista
Python