regex question

Chris cwitts at gmail.com
Tue Aug 5 14:58:59 CEST 2008


On Aug 5, 2:23 pm, Jeff <jeffo... at gmail.com> wrote:
> On Aug 5, 7:10 am, Marc 'BlackJack' Rintsch <bj_... at gmx.net> wrote:
>
>
>
> > On Tue, 05 Aug 2008 11:39:36 +0100, Fred Mangusta wrote:
> > > In other words I'd like to replace all the instances of a '.' character
> > > with something (say nothing at all) when the '.' is representing a
> > > decimal separator. E.g.
>
> > > 500.675  ---->       500675
>
> > > but also
>
> > > 1.000.456.344 ----> 1000456344
>
> > > I don't care about the fact the the resulting number is difficult to
> > > read: as long as it remains a series of digits it's ok: the important
> > > thing is to get rid of the period, because I want to keep it only where
> > > it marks the end of a sentence.
>
> > > I was trying to do like this
>
> > > s=re.sub("[(\d+)(\.)(\d+)]","... ",s)
>
> > > but I don't know much about regular expressions, and don't know how to
> > > get the two groups of numbers and join them in the sub. Moreover doing
> > > like this I only match things like "345.000" and not "1.000.000".
>
> > > What's the correct approach?
>
> > In [13]: re.sub(r'(\d)\.(\d)', r'\1\2', '1.000.456.344')
> > Out[13]: '1000456344'
>
> > Ciao,
> >         Marc 'BlackJack' Rintsch
>
> Even faster:
>
> '1.000.456.344'.replace('.', '') => '1000456344'

Doesn't work for his use case as he wants to keep periods marking the
end of a sentence.



More information about the Python-list mailing list