我有一个动态更改的字符串,它使用eval()进行评估。现在对于以'0'开始的数字,它使用八进制表示。例如, eval('030')= 24字符串评估()但忽略前导零(八进制)
现在有另一个线程有类似的问题(Pythonic way to eval all octal values in a string as integers)。在线程解决方案提到了一个正则表达式
re.sub(r'\b0+(?!\b)', '', some_string)
现在这个工作在大多数情况下,正常,但当我必须评估例如“0.08”,上述正则表达式不把工作做好,因为它消除了零在小数点后(它对'0.08'tp 0.8'和sin(0.08)对sin(0.8)等等......)。鉴于我在正则表达式方面的知识有限,我无法着手解决这个问题。所以基本上,我该如何修改给定的正则表达式,以便在小数点后立即忽略零?谢谢!
看看向前断言:http://www.regular-expressions.info/lookaround.html – 2013-02-24 08:25:24
我使用负回顾后尝试:'应用re.sub(R'(<\) \ b0 +(?!\ b)','',a)',它似乎正在工作。它看起来是否适合你们? – Crust3 2013-02-24 09:30:00
是的,但你应该写'\ B'而不是'(?!\ b)'(意思是相同的,看起来更好)。 – 2013-02-24 10:19:43