python str()函数在处理浮点数时的一个特性

python str()函数在处理浮点数时的一个特性,第1张

python str()函数在处理浮点数时的一个特性 python str()函数在处理浮点数时的一个特性

起因是在做正则匹配匹配浮点数的时候发现有一些数据无法匹配成功:

rec = re.compile(r'^[1-9]d*.d*|0.d*[1-9]$')
s = [0.0001, 0.00001, 0.12165, 0.000, 0.0000, 1.00000000]

[i for i in s if rec.match(str(i))] # 输出:[0.0001, 0.12165, 1.0]

1 e − 4 1e-4 1e−4还能匹配成功,但是 1 e − 5 1e-5 1e−5就失败了

之后尝试打印str()函数处理相关数据的结果:

for i in s:
    print(i, end = ', ')
# 输出:0.0001, 1e-05, 0.12165, 0.0, 0.0, 1.0, 

结论

在处理 0.00001 0.00001 0.00001这类可以换算成科学计数法的数据时,python会将其换算成 1 e − 5 1e-5 1e−5,可能导致正则匹配失效。


后续
rec = re.compile(r'^[1-9]d*.d*|0.d*[1-9]$')
s = [0.0001, 0.000011]

[i for i in s if rec.match(str(i))] # 输出:[0.0001, 1.1e-05]

0.000011 0.000011 0.000011可以匹配成功,似乎是匹配到了正则表达式|的左半部分。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5495784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存