I'm having trouble finding a safe way to parse and evaluate user input in my program.

In my app, I'm using a calculation like this:
  (a / b) * 100
The user should be able to override this and their preference is stored in a configuration file for later use. So I now have a string with the user defined calculation template, for example:

>>> config.get('custom-calc')
'(a * b) / 10'

I could tell the user the values should be entered like %(a)s and %(b)s which makes parsing easier I think, because I can do this:
>>> custom_calc = config.get('custom-calc')
>>> custom_calc
'(%(a)s * %(b)s) / 10'
>>> calc_str = custom_calc % {'a': get_value_a(), 'b': get_value_b()}

I should parse this, fill in the values which the program has at that point and calculate the outcome. What is the safest way?

Timo
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to