[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