4

Pythonで文字列内の項を計算することは可能ですか? 例えば:

string_a = "4 ** (3 - 2)"

unknown_function(string_a) = 4

これは可能ですか?私の例で「unknown_function」を模倣する関数はありますか?

4

4 に答える 4

13

があるeval

eval(string_a)
# 4

しかし、あなた以外の誰かからのものである場合は、どんな状況でもこれを使用しないでください。あなたのシステムに簡単にハッキングしてファイルを破壊する可能性があるからです!string_a

于 2013-02-03T02:04:56.787 に答える
12

前回の質問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

ここで、文字列式を関数に変換するレシピをハックしました。これはちょっとかわいいです。

于 2013-02-03T02:29:06.643 に答える
3

はい、ご利用いただけますeval

>>> string_a = "4 ** (3 - 2)"
>>> eval(string_a)
4
>>> 

ドキュメントで詳細を読むことができます

于 2013-02-03T02:02:54.930 に答える