2014-01-15 9 views
5

SymPyには、symPy式に任意の文字列を解析できるnice sympify()関数が用意されています。それは悪名高いのeval() SymPy:安全に文字列を解析する

  • はそれを自動的に読み取り式を簡素化に依存しているとして、

    1. それは安全ではありません。しかし、それには2つの大きな欠点を有しています。例えばsympify(「二項(5,3)」)の式に戻ります10

    だから私の質問は以下のとおりです。

    まず、文字列を「単に解析」する方法は、追加の計算せずに、そこにあります?安全を維持しながら(すなわち、解析および計算)任意のユーザーが生成した文字列をsympifyする受け入れられた方法があり、

    latex(parse('binomial(5,3)')) #returns '{\\binom{5}{3}}' 
    

    第二:私は、この効果のようなものを達成したいですか?これはSymPy Gammaによって行われますので、実際には可能ですが、どのくらい汚い作業が必要なのかという疑問があります。

  • 答えて

    1

    SymPy解析モジュールの内部機能を見てください。

    これを行う公式の方法はありません。 evalを避けるためにsympifyを書き直す必要があります。 SymPyガンマは単にsympifyを使用することに注意してください。 App Engine上でサンドボックス化されているため安全です。