[pyar] Pregunta de Regex

Claudio Freire klaussfreire en gmail.com
Mie Jun 18 20:07:20 ART 2014


2014-06-18 19:06 GMT-03:00 fisa <fisadev en gmail.com>:

> Eso así como te gustaría, es imposible.
> Pensá esto, si yo te doy este número:
>
> 9.567
>
> Qué es? 9 coma algo? o 9 mil y algo?
> Solo con el número no vas a poder saberlo, vas a necesitar que te digan
> además en qué formato está expresado.
>


Más alla de que los locales son la manera de hacerlo, podés detectar
algunos casos con lo que se sabe de los números (sólo hay un punto decimal,
por ejemplo, y nunca un separador de miles luego de un punto decimal):

>>> a = "9,567.00"
>>> b = "9.567,00"
>>> c = '9,382,323'
>>> d = '9.382.323'
>>> def
detect_decimal(x):

...    if '.' in x and ',' in
x:

...       if x.count('.') >
1:

...          return
Decimal(x.replace('.','').replace(',','.'))

...       elif x.count(',') >
1:

...          return
Decimal(x.replace(',',''))

...       elif x.index('.') <
x.index(','):

...          return Decimal(x.replace('.','').replace(',','.'))
...
else:

...          return
Decimal(x.replace(',',''))

...    elif '.' in x:
...       if x.count('.') > 1:
...         return Decimal(x.replace('.',''))
...       else:
...         return Decimal(x)
...    elif ',' in x:
...       if x.count(',') > 1:
...         return Decimal(x.replace(',',''))
...       else:
...         return Decimal(x.replace(',','.'))
...
else:

...       return
Decimal(x)

...
>>> from decimal import Decimal
>>> detect_decimal(a)
Decimal('9567.00')
>>> detect_decimal(b)
Decimal('9567.00')
>>> detect_decimal(c)
Decimal('9382323')
>>> detect_decimal(d)
Decimal('9382323')
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140618/67b256fc/attachment.html>


More information about the pyar mailing list