0

我试图从一个字符串中得到一些数学,没有小数它一切都很好,但是当我开始将它们添加到它停止工作时,它似乎并没有留下点在那里。我认为我的正则表达式是正确的,但有人可以纠正我吗?

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 出来的是 ["10", "10"] 而不是 ["1.0", "1.0"] 所以我们可以说它不是在那之后的行。有任何想法吗?

我的理解是这+意味着一个或多个?意味着0或1并且*意味着0或更多

4

1 回答 1

0

输入字符串仅以 10*10 的形式出现,所以我显然做错了什么,在另一个模块中,我在这里有这段代码,这是在我添加小数之前完成的......

acceptedChars = set(string.digits + "[]()+-/*^=!<>" + string.letters)
newL = ''.join([ x for x in e if x in acceptedChars])
e = newL

这意味着.它将被删除,所以我需要重新添加它。所以现在我正在使用这段代码:

acceptedChars = set(string.digits + "[]()+-/*^=!<>." + string.letters)
newL = ''.join([ x for x in e if x in acceptedChars])
e = newL

如果其他人能想到应该在其中的任何数学符号,那将在未来有所帮助。谢谢。

于 2012-08-16T21:06:10.637 回答