[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