L'évaluation d'une expression mathématique dans une chaîne de caractères

stringExp = "2^4"
intVal = int(stringExp)      # Expected value: 16

Renvoie le message d'erreur suivant:

Traceback (most recent call last):  
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int()
with base 10: '2^4'

Je sais que eval pouvez contourner ce problème, mais n'est-ce pas là une meilleure et surtout la plus sûre méthode pour évaluer une expression mathématique qui est stockée dans une chaîne de caractères?

  • ^ est l'opérateur XOR. La valeur attendue est de 6. Vous voulez probablement pow(2,4).
  • ou plus pythonically 2**4
  • Si vous ne voulez pas utiliser la fonction eval, alors la seule solution est la mise en place de la grammaire de l'analyseur. Jetez un oeil à pyparsing.
InformationsquelleAutor Pieter | 2010-03-03