我将如何解析多项式?

问题描述 投票:0回答:2

我想知道从字符串解析方程式的最佳方法是什么?例如,字符串'2x^2+7x-3'是多项式。

我想以这样的方式进行操作,使得有3个变量-a,b和c-且它们分别持有x ^ 2项,x项以及最后的整数的系数。系数应包括相应的符号,因为它们可以是正数或负数。

python parsing polynomials
2个回答
0
投票

您可以使用sympy

导入符号

my_poly = "2*x**2+7*x-3"
x = sympy.Symbol('x')
my_poly = sympy.polys.polytools.poly_from_expr(my_poly)[0]
a, b, c = poly.coeffs()

旁注。 my_poly中的表达式必须遵循python语法。如果您的字符串不正确,则可以使用字符串操作技术来更正它们。


0
投票
import re

eqn = '2x^2+7x-3'

# add a leading 1 where necessary
eqn = '1'+eqn if not eqn[0].isdigit() else eqn

#remove all powers
no_carets = re.sub(r"(\^\d+)", "", eqn)

# get numeric coefficients
raw_coeffs = re.findall(r'[\d\.\-\+]+', no_carets)

# add a 1 to lone signs and convert coefficients to float
coeffs = [float(x+'1') if len(x) is 1 and not x.isdigit() else float(x) for x in raw_coeffs] 

编辑:请注意,此解决方案附带警告(仅适用于系数的数值,可能因误导幂而产生误导性结果等),因此在这种情况下,您必须谨慎行事。

© www.soinside.com 2019 - 2024. All rights reserved.