如何检查一个字符串是否表示一个数字(浮点数或整数)?

1961

98
你现有的解决方案有什么问题吗?它很简短、快速且易读。 - Colonel Panic
5
你不仅仅可以返回True或False,你还可以适当修改返回的值。例如,你可以将非数字用引号括起来。 - Thruston
8
如果成功转换,返回float(s)的结果岂不更好?你仍然需要检查是否成功(结果为False),而且你已经完成了转换,这也是你可能想要的。 - Jiminion
10
尽管这个问题比较旧,但我想说这种方法被称为EAFP,是一种优雅的方式。因此,这可能是解决这种问题的最佳方案。 - thiruvenkadam
9
如果转换失败,不要返回float(s)的结果或None。如果你这样使用它x = float('0.00'); if x: use_float(x);,你的代码中现在有一个bug。这些函数抛出异常而不是一开始返回None的原因是为了避免Truthy值。更好的解决方案是在需要使用时避免实用程序函数,而是在调用float时使用try catch语句块捕获异常。 - ovangle
显示剩余16条评论
41个回答

-3
使用以下代码处理所有情况:
import re
a=re.match('((\d+[\.]\d*$)|(\.)\d+$)' ,  '2.3') 
a=re.match('((\d+[\.]\d*$)|(\.)\d+$)' ,  '2.')
a=re.match('((\d+[\.]\d*$)|(\.)\d+$)' ,  '.3')
a=re.match('((\d+[\.]\d*$)|(\.)\d+$)' ,  '2.3sd')
a=re.match('((\d+[\.]\d*$)|(\.)\d+$)' ,  '2.3')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接