Извлечь коэффициент из линейной функции с помощью регулярных выражений - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть эта функция

x1 +3 x2 +2 x3 -2.2 x4 +19 x5

Мне нужно извлечь коэффициенты [1, 3, 2, -2.2, 19 ] с помощью регулярных выражений

Я сделал [^ x] [1-9], но это не является общим. Например, если бы у меня было

3 x2 -2,2 x41 +19 x50

, он получит [3, -2.2, 41, 19, 50], а не [3, -2.2, 19]

Тогда мне понадобится что-то, чтобы справиться с этим, например [^ x [1-9] [1-9]], но что если у меня было x124 или x12345 или n цифр после x.

Как я могу исключить их и получить только коэффициенты?

1 Ответ

1 голос
/ 11 апреля 2020
import re

# define the problem
mystring='x1 +3 x2 +2 x3 -2.2 x4 +19 x5'

# get coefficients
regex_coeff='([+-]\d*\.{0,1}\d+) x'

# assuming your polynome is normalized, we can add the one in front
coeffs=[1.0] + [float(x) for x in re.findall(regex_coeff,mystring)]

# get exponents
regex_expo='x(\d+)'
exponents=[int(x) for x in re.findall(regex_expo,mystring)]

# print results
print(coeffs)
print(exponents)

>>[1.0, 3.0, 2.0, -2.2, 19.0]
>>[1, 2, 3, 4, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...