如何在Python中检查字符串是否表示数值?
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
上述方法可行,但似乎很笨拙。
如果您正在测试的内容来自用户输入,那么即使它表示int或float,它仍然是一个字符串。请参阅如何将输入读取为数字?用于转换输入,并询问用户输入,直到他们给出有效响应以确保输入在继续之前表示int或float(或其他要求)。
一个快速而简单的选项是检查数据类型:
def is_number(value):
return type(value) in [int, float]
或者,如果要测试字符串的值是否为数字:
def isNumber (value):
return True if type(value) in [int, float] else str(value).replace('.','',1).isdigit()
测验:
>>> isNumber(1)
True
>>> isNumber(1/3)
True
>>> isNumber(1.3)
True
>>> isNumber('1.3')
True
>>> isNumber('s1.3')
False
这个怎么样:
'3.14'.replace('.','',1).isdigit()
只有当有一个或没有“”时,它才会返回真在数字串中。
'3.14.5'.replace('.','',1).isdigit()
将返回false
编辑:刚刚看到另一条评论。。。可以为其他情况添加.replace(badstuff,“”,maxnum_badstuff)。如果你传递的是盐而不是任意的调味品(参考:xkcd#974),这会很好:P