2015-05-18 2 views
0

Мне было интересно, знал ли кто-нибудь о хорошей библиотеке python для оценки текстовых математических выражений. Так, например,Python parse математическое выражение текста

>>> evaluate("Three plus nine") 
12 

>>> evaluate("Eight + two") 
10 

Я видел похожие примеры, которые люди сделали для числовых значений и операторов в строке. One method used eval to compute the literal value of the expression. И another method of doing this used regex to parse the text.

Если у вас нет существующей библиотеки, которая справится с этой проблемой, я, вероятно, в конечном итоге воспользуюсь комбинацией методов регулярного выражения и eval для этого. Я просто хочу подтвердить, что уже ничего подобного уже нет.

ответ

3

Вы можете попробовать pyparsing, который выполняет общий рекурсивный анализ спуска. Фактически, here - это нечто, близкое вашему второму примеру.

О других ваших предложениях.

  • См here о вопросах безопасности Eval (по иронии судьбы, используя его для калькулятора).

  • По существу, regular languages are weaker than pushdown automata languages. Вы не должны пытаться бороться с общей проблемой дерева разбора с регулярными выражениями.

+0

Некоторые полезные советы там в примечании о том, чтобы не полагаться на регулярное выражение. Спасибо. – Gunther

Смежные вопросы