[Python] Mail from GioMBG > chiedo consigli su modifiche multiple sullo stesso file di testo in un colpo solo con python

Francesco Guerrieri f.guerrieri a gmail.com
Dom 30 Set 2007 22:26:32 CEST


On 9/30/07, Daniele Zambelli <daniele.zambelli a inwind.it> wrote:

> In un colpo solo non sarei capace, ma con un ciclo...
>
> sostituzioni= (('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'))
>
> def sostituisci(stringa, sostituzioni):
>     for prima, dopo in sostituzioni:
>         stringa=stringa.replace(prima, dopo)
>     return stringa
>
> testo=file('input.txt').readlines()
> nuovotesto=[sostituisci(riga, sostituzioni) for riga in testo]
>
> fo=file('output.txt', "w")
> for riga in nuovotesto:
>     fo.write(riga)
> fo.close()
>
> Ciao


Se i file fossero grossi questo non è l'approccio migliore perché crei
delle liste non strettamente necessarie. Se proprio volessi usare
quest'approccio e non usare parser html, allora si potrebbe fare così:


import glob

sostituzioni= (('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'))

def sostituisci(stringa, sostituzioni):
   for prima, dopo in sostituzioni:
       stringa=stringa.replace(prima, dopo)
   return stringa

lista_files = glob.glob('*.html')
for filename in lista_files:
    input_file = open(filename, 'r')
    output_file = open(filename+'.new', 'w')
    for line in input_file:
        output_file.write(sostituisci(line, sostituzioni))

ciao,
francesco


Maggiori informazioni sulla lista Python