我有一个动态变化的字符串,使用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'并且罪(0.08)到罪(0.8)等等......)。鉴于我对正则表达式的了解有限,我无法继续解决这个问题。所以基本上,我如何修改给定的正则表达式,以便它在小数点后立即忽略零?谢谢!
答案 0 :(得分:0)
你真的需要使用eval
吗?如果您只需要将字符串转换为数字,请使用float
:
>>> float('0010.001')
10.001
答案 1 :(得分:0)
由于对mark a comment as an answer的功能请求仍然被拒绝,我在此处复制上述解决方案。
我尝试过使用负面的lookbehind:re.sub(r'(?<!\.)\b0+(?!\b)', '', a)
,它似乎正在起作用。你觉得这样对吗? - Crust3