0

重複の可能性:
Python で数式を解析し、解いて答えを見つける

プラス記号と足し算記号を含む文字列を計算するために「元に戻す」にはどうすればよいですか?

たとえば、次のような文字列があります。

'6*1+7*1+1*7'

int() を試しましたが、エラーが発生しました。この文字列全体を元に戻して、純粋な整数計算を取得するにはどうすればよいですか?

4

2 に答える 2

3

文字列を解析して結果を計算することにより、サポートする操作を実際に実装する必要があります。簡単なパーサーは次のようになります。

>>> import functools,operator
>>> sum(functools.reduce(operator.mul, map(int, summand.split('*')), 1)
...     for summand in '6*1+7*1+1*7'.split('+'))
20

ビルトインevalは 1 回限りのスクリプトまたは対話型コンソールで動作する可能性がありますが、文字列を Python ソースとして解釈するため、文字列を制御するすべてのユーザー (つまりユーザー) が任意の Python コマンドを実行できることに注意してください。

于 2012-11-12T19:02:36.747 に答える
2

使用eval():

In [177]: eval('6*1+7*1+1*7')
Out[177]: 20

またはexec:

In [188]: exec compile('6*1+7*1+1*7','None','single')
Out[188]: 20
于 2012-11-12T18:59:21.487 に答える