Разверните и упростите выражение на основе строкового ввода - PullRequest
2 голосов
/ 12 апреля 2020

У меня есть ввод типа "2(5x+4) + 3(2x-1)" в виде простого текста, и мне нужно его расширить и упростить. Похоже, sympy требует, чтобы он был введен как python объект, состоящий из python типов. Есть ли способ автоматически разобрать его / библиотеку, которая не требует этого, чтобы я мог дать ей строку, и она дает мне ответ в удобочитаемом формате?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

sympy уже имеет такой встроенный синтаксический анализатор в sympy.parsing.sympy_parser.parse_expr. Чтобы получить желаемые результаты с помощью оператора ввода, вы также должны добавить преобразование implicit_multiplication (так как в противном случае sympy не будет генерировать выражения, которые имеют смысл для 2( и 5x):

from sympy.parsing.sympy_parser import (
    parse_expr,
    standard_transformations, 
    implicit_multiplication,
)
parse_expr("2(5x+4) + 3(2x-1)", transformations=standard_transformations + (implicit_multiplication,))
1 голос
/ 12 апреля 2020

Вы хотите использовать функцию sympify , для вашего выражения это будет выглядеть так:

sympify('2*(5*x+4) + 3*(2*x-1)')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...