文字列から数学を取得しようとしていますが、小数がなくてもすべて完全に機能しましたが、それらを追加し始めたときに機能が停止したため、そこにドットが残っていないようです。私の正規表現は正しいと思いますが、誰かが私を修正できますか?
result = re.findall('\d+\.?\d*\*\d+\.?\d*', e)
for x in result:
lst = x.split("*")
print lst
e = e.replace(x, str(float(lst[0])*float(lst[1])))
したがって、"1.0*1.0"
1.0 で出力されるはずですが、100.0 で出力されます。これは正規表現によるものです。
print lst は ["1.0", "1.0"] ではなく ["10", "10"] で出力されるため、それ以降の行ではないと言えます。何か案は?
私の理解では、+
1つ以上?
は0または1を*
意味し、0以上を意味します