Итак, у меня есть строка, которая выглядит, например, как "012 + 2 - 01 + 24"
.Я хочу иметь возможность быстро (меньше кода) оценить это выражение ...
Я мог бы использовать eval () для строки, но я не хочу, чтобы 012
было представлено в восьмеричной форме (10), Я хочу, чтобы он был представлен как int (12).
Мое решение для этого работает, но оно не элегантно.Я как бы предполагаю, что есть действительно хороший питонский способ сделать это.
Мое решение:
#expression is some string that looks like "012 + 2 - 01 + 24"
atomlist = []
for atom in expression.split():
if "+" not in atom and "-" not in atom:
atomlist.append(int(atom))
else:
atomlist.append(atom)
#print atomlist
evalstring = ""
for atom in atomlist:
evalstring+=str(atom)
#print evalstring
num = eval(evalstring)
По сути, я разрываю аппроксимацию строки и нахожу в ней числа и переворачиваюих в целые числа, а затем я перестраиваю строку с помощью целых чисел (по сути, удаляя начальные 0, кроме тех случаев, когда 0 - это само по себе число).
Как это можно сделать лучше?