Si j'ai une chaîne de caractère a="23", je peux faire x=int(a) pour
avoir un nombre x.
J'aimerais faire la même chose avec des listes. J'ai une chaîne de
caractère
[[x = -3.641879138963874,y = 3.706332781387099],x =
-1.958120861036126,y= 2.627000551946235]]
Et je voudrais en faire une liste telle que
L[0] soit la liste [x = -3.641879138963874,y = 3.706332781387099]
Pour le contexte, je suis en train de vouloir résoudre des équations
avec maxima, et j'analyse la sortie pour créer une liste de solutions.
Au final, à partir de la chaîne
[[x = -3.641879138963874,y = 3.706332781387099],x =
-1.958120861036126,y= 2.627000551946235]]
je voudrais avoir la liste
[[-3.641879138963874,3.706332781387099] ,
[-1.958120861036126,2.627000551946235]]
avec
L[0][0]=-3.641879138963874
L[0][1]=3.706332781387099
L[1][0]=-1.958120861036126
L[1][1]=2.627000551946235
Pour l'instant, je fais des manipulations à coup de recherches des
caractères "[","]" et ",", mais c'est un peu l'horreur.
Si vous avez des idées de comment faire facilement, je suis preneur
> Quant à taxer de "plus alarmiste que réaliste" le fait de rappeler une règle de sécurité *de base* (ne pas faire confiance aux entrées utilisateur), je trouve ça pour le moins surprenant.
En tant que OP, je plussoie et remercie qu'on m'ait attiré l'attention sur ce problème. Dans mon cas, il n'y a toutefois pas à s'en arracher les cheveux parce que je ne passe pas à eval() une entrée utilisateur, mais la sortie d'un programme : Je fais un commands.getoutpu("maxima --batch-string="display2d:false;"+ligne+";")
où "ligne" est la commande maxima adaptée au calcul que je veux faire (essentiellement, calculer des dérivées de fonctions et des extrema). Le string "ligne" est donc composé par mon programme sur base de la donnée d'une fonction par l'utilisateur.
Faudrait être incroyablement sioux pour trouver une fonction dont la dérivée s'écrit comme une commande python qui permette d'exploiter la faille !
Pour le principe, je ne vais quand même pas utliser eval().
Merci bonne aprème Laurent
> Quant à taxer de "plus alarmiste que réaliste" le fait de rappeler une
règle de sécurité *de base* (ne pas faire confiance aux entrées
utilisateur), je trouve ça pour le moins surprenant.
En tant que OP, je plussoie et remercie qu'on m'ait attiré l'attention
sur ce problème.
Dans mon cas, il n'y a toutefois pas à s'en arracher les cheveux parce
que je ne passe pas à eval() une entrée utilisateur, mais la sortie d'un
programme :
Je fais un
commands.getoutpu("maxima --batch-string="display2d:false;"+ligne+";")
où "ligne" est la commande maxima adaptée au calcul que je veux faire
(essentiellement, calculer des dérivées de fonctions et des extrema). Le
string "ligne" est donc composé par mon programme sur base de la donnée
d'une fonction par l'utilisateur.
Faudrait être incroyablement sioux pour trouver une fonction dont la
dérivée s'écrit comme une commande python qui permette d'exploiter la
faille !
Pour le principe, je ne vais quand même pas utliser eval().
> Quant à taxer de "plus alarmiste que réaliste" le fait de rappeler une règle de sécurité *de base* (ne pas faire confiance aux entrées utilisateur), je trouve ça pour le moins surprenant.
En tant que OP, je plussoie et remercie qu'on m'ait attiré l'attention sur ce problème. Dans mon cas, il n'y a toutefois pas à s'en arracher les cheveux parce que je ne passe pas à eval() une entrée utilisateur, mais la sortie d'un programme : Je fais un commands.getoutpu("maxima --batch-string="display2d:false;"+ligne+";")
où "ligne" est la commande maxima adaptée au calcul que je veux faire (essentiellement, calculer des dérivées de fonctions et des extrema). Le string "ligne" est donc composé par mon programme sur base de la donnée d'une fonction par l'utilisateur.
Faudrait être incroyablement sioux pour trouver une fonction dont la dérivée s'écrit comme une commande python qui permette d'exploiter la faille !
Pour le principe, je ne vais quand même pas utliser eval().
Merci bonne aprème Laurent
Michel Claveau - NoSpam SVP ; merci
Re !
tu a oublié de mentionner os.system() etc, ou les injections SQL, ou <ami-lecteur-ajoute-ta-faille-favorite-ici>.
Non, je n'ai pas oublié. Mais, afin d'éviter une usure prématurée de mon clavier, et de limiter le risque d'ampoules au bout de mes jolis petits doigts, j'ai préféré regroupé tout ça, et les autres cas que tu n'as pas cités, sous le terme générique "etc." (lui-même abréviation de "et caetera", comme tu le sais sans doute déjà) ;o)
@+ -- Michel Claveau
Re !
tu a oublié de mentionner os.system() etc, ou les injections SQL, ou
<ami-lecteur-ajoute-ta-faille-favorite-ici>.
Non, je n'ai pas oublié. Mais, afin d'éviter une usure prématurée de mon
clavier, et de limiter le risque d'ampoules au bout de mes jolis petits
doigts, j'ai préféré regroupé tout ça, et les autres cas que tu n'as pas
cités, sous le terme générique "etc." (lui-même abréviation de "et
caetera", comme tu le sais sans doute déjà) ;o)
tu a oublié de mentionner os.system() etc, ou les injections SQL, ou <ami-lecteur-ajoute-ta-faille-favorite-ici>.
Non, je n'ai pas oublié. Mais, afin d'éviter une usure prématurée de mon clavier, et de limiter le risque d'ampoules au bout de mes jolis petits doigts, j'ai préféré regroupé tout ça, et les autres cas que tu n'as pas cités, sous le terme générique "etc." (lui-même abréviation de "et caetera", comme tu le sais sans doute déjà) ;o)