Je veux choisir les nombres spécifiques d'une expression en python. Et puis les variables.

C'est-à-dire l'expression:

2a**2+b+c

Devraient devenir:

2, 1, 1

a**2, b, c

Et

25a**2+12b+c

Devrait produire:

25, 12, 1

a**2, b, c

-3
Nils Edström 31 août 2020 à 20:11

2 réponses

Meilleure réponse

Vous pourriez un regex comme celui-ci "(-?\d*)a\*\*2\+?(-?\d*)b\+?(-?)c" puis utiliser comme suit. Les groupes sont le 3 facteur

  • (-?\d*) signe moins possible puis chiffres possibles
  • (-?\d*) idem
  • (-?) signe moins possible uniquement

Vous verrez également \+? car s'il y a un signe moins, vous n'aurez pas de plus (mais vous ne le voulez pas dans le groupe)

import re

words = ['25a**2+12b+c', '2a**2+b+c', '-31a**2-12b+c']
pattern = re.compile(r"(-?\d*)a\*\*2\+?(-?\d*)b\+?(-?)c")
for word in words:
    res = pattern.match(word)
    groups = [g or 1 for g in res.groups()] # if empty group, it's a 1 factor
    print(groups, ("a**2", "b", "c"))

Les sorties

['25', '12', 1]   ('a**2', 'b', 'c')
['2', 1, 1]       ('a**2', 'b', 'c')
['-31', '-12', 1] ('a**2', 'b', 'c')

REGEX DEMO

0
azro 31 août 2020 à 17:22

Je vous suggère de diviser l'expression en utilisant la fonction split () Exp = expression.split ('+')

0
Farah Deeba 31 août 2020 à 17:21