[Python] Trovare un'occorrenza in un file e sostituire un valore

Alessandro Dentella sandro a e-den.it
Lun 25 Gen 2010 16:06:42 CET


On Mon, Jan 25, 2010 at 03:20:32PM +0100, Lorenzo Macchiavelli wrote:
> Salve a tutti qualcuno può aiutarmi??
> Dovrei fare un find and replace in py un pò avanzato("" Per ME!!!"")
> 
> del tipo: Quando è presente la stringa di tipo "AB" Devo Sostituire i valori
> all'intero tra i " : "  e " AB " moltiplicando per 11
> il valore all'interno e sostituire la stringa "AB" CON "RB".
> 
> Il File è formattato in questo modo:
> ...
> RTS_YAS:10293AB
> RTC_YAS:1003AB
> RTS_YAS:010003RB
>  ...
> 
> ESEMPIO: " RTS_YAS:10293AB " diventa "RTS_YAS:113223RB" 
> 
> Qualcuno può spiegarmi come fare??? quale ragionamento fareste per risolvere
> questo tipo di problema??


usa il modulo 're' ed in particolare guarda re.sub e sappi che il valore da
sostituire può essere una funzione che a sua volta riceverà in argomento il
match::

   """\
   RTS_YAS:10293AB
   RTC_YAS:1003AB
   RTS_YAS:010003RB
   """
   import re
   # a scopo didattico mostro sia gruppi con nome che non
   PATTERN = re.compile('(RTS_YAS:)(?P<num>\d+)AB')

   def my_sub(m):
       return "%s%sRB" % (m.group(1), int(m.group('num')) * 11,)

   for line in __doc__.split():
       if PATTERN.match(line):
	   print line,
	   print " ==>", PATTERN.sub(my_sub, line)    


sandro
*:-)


-- 
Sandro Dentella  *:-)
http://sqlkit.argolinux.org        SQLkit home page - PyGTK/python/sqlalchemy


Maggiori informazioni sulla lista Python