convert user input to Decimal objects using eval()?

Julian Hernandez Gomez jhernandez at pragma.com.co
Tue Mar 29 16:22:15 CEST 2005


On Tuesday 29 March 2005 03:04, Raymond Hettinger wrote:
> from decimal import Decimal
> import re
>
> number = re.compile(r"((\b|(?=\W))(\d+(\.\d*)?|\.\d+)([eE][+-]?\d{1,3})?)")
> deciexpr = lambda s: number.sub(r"Decimal('\1')", s)
>
> for s in ('1.00000001+0.1111111',
>    '+21.3e-5*85-.1234/81.6',
>    '1.0/7'):
>     print '%s\n  --> %r' % (s, eval(s))
>     s = deciexpr(s)
>     print '%s\n  --> %r\n' % (s, eval(s))

Wow!

Thank you so much!!!

now I can do my simple math function evaluator much more reliable !

Thanks again!

-- 
Julián



More information about the Python-list mailing list