1

我有一个动态变化的字符串,它使用 eval() 进行评估。现在对于以“0”开头的数字,它使用八进制表示。例如。评估('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) 等等...) 。鉴于我对正则表达式的了解有限,我无法继续解决这个问题。所以基本上,我如何修改给定的正则表达式,使其在小数点后立即忽略零?谢谢!

4

2 回答 2

0

由于将评论标记为答案的功能请求仍然被拒绝,因此我在此处复制上述解决方案。

我尝试过使用负面的lookbehind:re.sub(r'(?<!\.)\b0+(?!\b)', '', a)它似乎正在工作。你们觉得对吗?– 地壳3

于 2014-05-30T14:27:23.670 回答
0

你真的需要使用eval吗?如果您只需要将字符串转换为数字,请使用float

>>> float('0010.001')
10.001
于 2013-02-24T10:59:20.110 回答