Pythonで文字列内の項を計算することは可能ですか? 例えば:
string_a = "4 ** (3 - 2)"
unknown_function(string_a) = 4
これは可能ですか?私の例で「unknown_function」を模倣する関数はありますか?
があるeval
eval(string_a)
# 4
しかし、あなた以外の誰かからのものである場合は、どんな状況でもこれを使用しないでください。あなたのシステムに簡単にハッキングしてファイルを破壊する可能性があるからです!string_a
前回の質問sympy
の便利なモジュールのように、ここに適用できます。
>>> import sympy
>>> sympy.sympify("4**(3-2)")
4
そしてさえ
>>> sympy.sympify("2*x+y")
2*x + y
>>> sympy.sympify("2*x+y").subs(dict(x=2, y=3))
7
ただし、これはsympy
オブジェクトを返すことに注意してください。整数または浮動小数点数を取得したい場合は、明示的に変換する必要があります。
>>> type(sympy.sympify("4**(3-2)"))
<class 'sympy.core.numbers.Integer'>
>>> int(sympy.sympify("4**(3-2)"))
4
ここで、文字列式を関数に変換するレシピをハックしました。これはちょっとかわいいです。