[Python] Mail from GioMBG > chiedo consigli su modifiche multiple
sullo stesso file di testo in un colpo solo con python
Daniele Varrazzo
piro a develer.com
Dom 30 Set 2007 11:32:41 CEST
Gio MBG Canepa root ha scritto:
> http://home.9records.com/wiki/index.php/Template
>
> questo è quello che io chiamo un "beta template"
> cioè una pagina wiki che necessita di essere correttamente compilata con delle
> sostituzioni che la rendano utile al suo scopo,
>
> I termini da sostituire (sempre per esempio) potrebbero essere:
>
> LA_BEL 9records.com
> LA_BE_LNODOT 9records
> CATALOGO 9REC001
> NUMCATA 001
> GRUPPO Pippo
> SDATE 01/01/2007
> N_ICK Pluto
> N_AME Minni
> SURNAM_E Minorpio
> YEAR 2007
>
> in realtà ci sono circa 50 sostituzioni da effettuare questo è un piccolo
> esempio della manovra reale che dovrei effettuare (in un colpo solo) sul mio
> file di testo.
Ciao,
il meccanismo principale di sostituzione tra stringhe in Python prevede che i
placehoder nel template siano in formato %(nome)s. Per cui se tu avessi un
template:
# N.B. questo l'ho copiato dal tuo template, ma non è HTML valido!
template = """
<td><b>%(CATALOGO)s</font></b></td>
<td><b>%(GRUPPO)s</font></b></td>
"""
allora potresti tenere le cose da sostituire in un dizionario:
valori = {
'CATALOGO' : 'Juno',
'GRUPPO' : 'Boards of Canada',
}
e usare l'operatore % sulle stringhe
pagina = template % gruppo
----
C'è anche un metodo un po' meno efficiente, ma che ti permetterebbe di
lasciare inalterati i tuoi template (quindi, se sommi il suo tempo col *tuo*
tempo, molto più efficiente!): usare le espressioni regolari. Il metodo sub()
puo' prendere in input un callable che viene chiamato con un oggetto match in
input e che deve restituire la stringa da sostituire:
template = """
<td><b>CATALOGO</font></b></td>
<td><b>GRUPPO</font></b></td>
"""
import re
# Matcha le chiavi del dizionario dei valori
rex = re.compile("|".join(valori))
pagina = rex.sub(lambda m: valori[m.group()], template)
----
Questo serve a creare stringhe da stringhe: da dove ottieni il tuo template?
che te ne fai della pagina di output? Con Python puoi anche automatizzare
l'interazione col web, ad esempio effettuando il post della pagina generata in
una form offerta da wikimedia. Dai un'occhiata ai moduli di sistema "urllib" e
"urllib2".
Ciao!
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python