|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Vincent MAILLE Inscription : avril 2010 Messages : 54 ![]() |
Bonjour, je voudrais créer une fonction qui parse une expression mathématique (un problème classique pour lequel je n'ai pas trouvé de solution en python). Le but serait quelque chose du genre :
analyse('2*x+(3+x)') renverrai une liste : ['+','2*x','3+x'] J'arrive à parser l'expression en faisant : Code :
Merci d'avance, Vincent P.S : Je ne veux pas utiliser sympy car il effectue des simplifications au moment de la conversion. |
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Bonjour,
Peut-être voir du côté de pyparsing: http://pyparsing.wikispaces.com/ Je ne le connais pas, mais il y a un exemple ici: http://pyparsing.wikispaces.com/file/view/fourFn.py Avec lui, on peut obtenir par exemple: '(2+3)/5^2' => ['2', '3', '+', '5', '2', '^', '/'] C'est de la polonaise inverse, mais on peut peut-être obtenir l'arbre que tu cherches en modifiant sa configuration? [Edit] Sinon, avec ast: Code :
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Vincent MAILLE Inscription : avril 2010 Messages : 54 ![]() |
Bonjour,
J'ai finalement recréé l'expression à la main via une petite fonction récursive, je pensais qu'elle existait déjà. Merci pour la réponse, Vincent |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com