重複の可能性:
Python で数式を解析し、解いて答えを見つける
プラス記号と足し算記号を含む文字列を計算するために「元に戻す」にはどうすればよいですか?
たとえば、次のような文字列があります。
'6*1+7*1+1*7'
int() を試しましたが、エラーが発生しました。この文字列全体を元に戻して、純粋な整数計算を取得するにはどうすればよいですか?
重複の可能性:
Python で数式を解析し、解いて答えを見つける
プラス記号と足し算記号を含む文字列を計算するために「元に戻す」にはどうすればよいですか?
たとえば、次のような文字列があります。
'6*1+7*1+1*7'
int() を試しましたが、エラーが発生しました。この文字列全体を元に戻して、純粋な整数計算を取得するにはどうすればよいですか?
文字列を解析して結果を計算することにより、サポートする操作を実際に実装する必要があります。簡単なパーサーは次のようになります。
>>> 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 コマンドを実行できることに注意してください。
使用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