bonjour
je voudrais juste avoir les valeurs x, et y d'une chaine s='X=-1, Y=-1'
eval(s) ne fonctionne pas
bonjour
je voudrais juste avoir les valeurs x, et y d'une chaine s='X=-1, Y=-1'
eval(s) ne fonctionne pas
Bonjour,
Une chaine comportant une affectation ('=') n'est pas une expression, mais une instruction. Elle ne peut pas être calculée avec eval.
De plus, 'X=-1, Y=-1' est un tuple à cause de la virgule. Il faudrait mettre un point-virgule pour que ce soit un séparateur acceptable entre 2 instructions.
On peut donc faire ce que tu souhaites avec l'une des 2 méthodes suivantes:
L'exécution donnera bien X=-1 et Y=-1, mais l'utilisation d'exec n'est pas conseillé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 exec 'X=-1; Y=-1' exec 'X, Y = -1, -1'
Tyrtamos
exec n'est pas conseillé? parcequ'il peut écraser une valeur deja existante?
avec une virgule au lieu du ;
y a t'il moyen de recuperer 'X=28.00, Y=21.00' en tuple puis de faire exec sur chacun des 2 pour avoir x et y
ou je fais un string.replace(',',';')
Entre autres. En tout cas, ce n'est pas de la bonne programmation. On l'utilise quand on ne peut pas faire autrement.
Sinon:
Attention: x et X sont des variables différentes sous Python!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 s = 'X=-1,Y=-1' for k in s.split(','): exec k
Tyrtamos
Le dernière solution avec eval est mieux. Mais en fait, si tu pars de s='X=-1, Y=-1', tu n'as pas beaucoup le choix. Il vaudrait mieux éviter d'arriver à cette chaine, si tu peux, en jouant sur le code précédent. Si tu ne peux pas, continue comme ça.
Tyrtamos
Partager