On Wed, 25 May 2011 14:57:17 +0100 (BST), Walter Valenti <waltervale...@yahoo.it> wrote: > Ho delle stringe, dove i caratteri che non sono le lettere maiuscole e > minuscole e i numeri, > vengono sostituiti da "__codice.ascii__" ovvero: > doppio underscore + codice ascii + doppio underscore. > > > Per decodificarli pensavo di usare le espressioni regolari. > Qualcosa del tipo > p=re.compile('__\d\d__|__\d\d\d__') > il problema è che quando voglio eseguire la "sub", non so come fare a > passargli il numero (cod_ascii) > > Idee ??
La funzione re.sub (o il metodo sub dell'oggetto Pattern) supportano una funzione come argomento per il "replace": la funzione prende in input l'oggetto match e deve restituire una stringa che viene sostituita alla parte matchata:: >>> rex = re.compile(r'__(\d+)__') >>> rex.sub(lambda m: chr(int(m.group(1))), 'un__65__ pr__79__va') 'unA prOva' Comunque, OT, se devi proprio inventarti un formato di codifica, prendi in considerazione l'uso di un formato standard, tipo il percent encoding, che è anche supportato dalla stdlib (vedi http://docs.python.org/library/urllib.html#urllib.quote). -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python