Это грубая презентация.Надеюсь, за этим не так уж сложно следить.
Начните с одного из ваших полиномов и отбросьте пробелы для облегчения обработки строк.Используйте первое регулярное выражение для определения «имени» многочлена (P) и каждого его члена для дальнейшей обработки.Теперь используйте второй regex.sub, чтобы поместить знак умножения перед переменной в полиномиальном члене, если это необходимо.Используйте обычную замену строки, чтобы заменить каретки на «**».
Превратить список в строку.Я действительно поставил знак равенства, но в этот момент я понял, что мне действительно не нужно или не нужно имя полинома для целей преобразования в sympy.
Последний шаг состоял в том, чтобы использовать sympify, чтобы ввести многочлен для sympy, и дать ему имя, P. Добавление многочленов в sympy довольно просто.
>>> import regex
>>> s = 'P = 3x^2 + 2x + 7'.replace(' ', '')
>>> poly = []
>>> for term in regex.findall(r'[+-]?\d*\w+\^?\d*', s):
... term = regex.sub(r'(\d*)([A-Za-z]\w*)(.*)', r'\1*\2\3', term)
... term = term.replace('^', '**')
... poly.append(term)
...
>>> poly
['*P', '3*x**2', '+2*x', '+7']
>>> poly[0]=poly[0][1:]+'='
>>> poly = ''.join(poly)
>>> poly
'P=3*x**2+2*x+7'
>>> from sympy import *
>>> P =sympify(poly[2:])
>>> P
3*x**2 + 2*x + 7