[Python] string replace

Alessandro Dentella sandro a e-den.it
Ven 7 Ott 2011 08:54:49 CEST


On Thu, Oct 06, 2011 at 02:01:22PM +0200, Daniele Varrazzo wrote:
> On Thu, 6 Oct 2011 13:35:42 +0200, "roberto.preziusi a gmail.com"
> <roberto.preziusi a gmail.com> wrote:
> > Ciao,
> > mi sono bloccato con una regular expression su python.
> > Sto cercando di mettere i due punti ad un mac address e togliere quello
> > finale, ma non riesco a far funzionare questa regexp che su sed va cosė
> > bene:
> > 
> > *da terminale:*
> > 
> > echo "00A1B2AABBCC" | sed 's/\(..\)/\1:/g;s/:$//'
> > 
> > *con python :*
> > 
> >>>> mac = "00A0BCAABBCC"
> >>>> mac.replace("\(..\)","\1:")
> > '00A0BCAABBCC'
> >>>> mac.replace("..","\1:")
> > '00A0BCAABBCC'
> >>>> mac.replace("..",":")
> > '00A0BCAABBCC'
> >>>> mac.replace("\.\.",":")
> > '00A0BCAABBCC'
> > 
> > dove sbaglio ?
> 
> Nell'assumere che string.replace capisca le espressioni regolari :)
> 
> >>> import re

In aggiunta ricorda che la sitassi delle regexp di python copia quella di
perl (aggiungendo alcuni elementi) non quella di sed.

> >>> re.sub(r"(..)", r"\1:", "00A1B2AABBCC")[:-1]

come vedi qui Daniele ha scritto "(..)", non "\(..\)"

sandro


Maggiori informazioni sulla lista Python