我想从一个字符串中获得一些数学,没有小数,它所有的工作都很完美,但是当我开始在它中添加它们停止工作时,它似乎没有在那里留下点。我认为我的正则表达式是正确的,但有人能纠正我?使用正则表达式和数学
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,这是因为正则表达式。打印lst带出[10“,”10“]而不是[”1.0“,”1.0“],所以我们可以说它不是那条线之后。有任何想法吗?
我的理解是,+
意味着一个或多个?
指0或1,*
表示0以上
它适用于我......(所有说的和完成,'e'等于'“1.0”') – mgilson 2012-08-16 00:50:59
也适用于我。 。 。我猜[GIGO](http://en.wikipedia.org/wiki/Garbage_in,_garbage_out);当你说''1.0 * 1.0''时,那是什么e被设置为以前? – ernie 2012-08-16 00:51:43
这里不是你的问题,但你最好习惯使用正则表达式的原始字符串('r'\ d + \。?.....“),所以你没有得到如果你尝试添加一个'\ b'或其他东西,会感到困惑。 – Dougal 2012-08-16 00:55:06