I decided to play with it a little bit, but take a different approach
than Steven. This seems actually one of the problems where regexp
might be a good solution.

import re

re_signednumber = r'([-+]?\d+)'
re_expression = '%s(?:([-+/*])[-+/*]*?%s)*' % (re_signednumber,
re_signednumber)
for test_case in ('3++++++8', '3++--*-9', '3++*/-9', '45--/**/+7',
'55/-**+-6**'):
        print re.match(re_expression, test_case).groups()

Now you have two problems ;-)

One question: you write "in cases where multiple symbols conflict in
meaning (as '3++--*-9' the earliest valid symbols in the sequence
should be preserved". Aren't '++' the earliest valid symbols
(operation and sign)? It seems, instead, that in your test cases the
sign is always immediately preceding the number. My regexp
accommodates for that.

Regards,
Marek
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to