Все, что мне нужно, это проверить с помощью python, является ли строка допустимым математическим выражением или нет.
Для простоты позвольте ' s говорят, что мне просто нужны операторы + - * /
( + -
тоже как унарные) с числами и вложенными скобками. Я также добавляю простые имена переменных для полноты.
Итак, я могу проверить этот способ:
test("-3 * (2 + 1)") #valid
test("-3 * ") #NOT valid
test("v1 + v2") #valid
test("v2 - 2v") #NOT valid ("2v" not a valid variable name)
Я пробовал pyparsing , но просто пробовал пример: "простой синтаксический анализатор алгебраических выражений, который выполняет ] +, -, *, /
и ^
арифметические операции " Мне передается недопустимый код, и я также пытаюсь его исправить. Я всегда получаю неправильный синтаксис, анализируемый без создания исключений
попробуйте :
>>>test('9', 9)
9 qwerty = 9.0 ['9'] => ['9']
>>>test('9 qwerty', 9)
9 qwerty = 9.0 ['9'] => ['9']
оба теста пройдены ... o_O
Есть совет?