我想知道从字符串解析方程式的最佳方法是什么?例如,字符串'2x^2+7x-3'
是多项式。
我想以这样的方式进行操作,使得有3个变量-a,b和c-且它们分别持有x ^ 2项,x项以及最后的整数的系数。系数应包括相应的符号,因为它们可以是正数或负数。
您可以使用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语法。如果您的字符串不正确,则可以使用字符串操作技术来更正它们。
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]
编辑:请注意,此解决方案附带警告(仅适用于系数的数值,可能因误导幂而产生误导性结果等),因此在这种情况下,您必须谨慎行事。