Вы ищете tokenize строку. Для выражения Python вы можете сделать это, используя модуль tokenize, или для более простой формы вы можете использовать различные функции поиска. Вот два примера:
>>> expression = "((((324+17)*3)/((936-51)+124))-((13*(72-41))+6))"
>>> import re
>>> re.findall('[0-9]+|.', expression)
['(', '(', '(', '(', '324', '+', '17', ')', '*', '3', ')', '/', '(', '(', '936', '-', '51', ')', '+', '124', ')', ')', '-', '(', '(', '13', '*', '(', '72', '-', '41', ')', ')', '+', '6', ')', ')']
>>> import tokenize
>>> [t.string for t in tokenize.tokenize(iter([expression.encode('utf-8')]).__next__)
... if t.type not in (tokenize.ENCODING, tokenize.ENDMARKER)]
['(', '(', '(', '(', '324', '+', '17', ')', '*', '3', ')', '/', '(', '(', '936', '-', '51', ')', '+', '124', ')', ')', '-', '(', '(', '13', '*', '(', '72', '-', '41', ')', ')', '+', '6', ')', ')']
iter([bytes]).__next__
часть требуется, потому что токенизировать обычно читает из файлов, а не ярлык для одной строки.
Можете ли вы показать, какой результат вы надеетесь достичь? – CoryKramer
Вопросы поиска справки по отладке («почему этот код не работает?») Должны включать ** желаемое поведение **, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См. [MCVE]. –