python中的检查字符串是否为数字

checking string is number or not in python

本问题已经有最佳答案,请猛点这里访问。

以下哪项是检查字符串是否可以表示为数字的最佳方法?

a)

1
2
3
4
5
6
def is_number(s):
  try:
    float(s)
    return True
  except ValueError:
    return False

b)

1
2
Import re
check_regexp = re.compile("^\d*\.?\d*$")

c)

1
2
3
4
def isNumber(token):
  for char in token:
  if not char in string.digits: return false
    return True

d)

1
2
import re
check_replace = lambda x: x.replace(‘.’,’’,1).isdigit()


这四个版本都有不同的功能。因为第一个版本是唯一一个正确处理底片的版本,所以在几乎所有情况下我都喜欢它。即使其他版本被调整为返回与第一个版本相同的值,为了清晰起见,我还是更喜欢第一个版本。但是,如果输入格式需要比float接受的格式更严格,可能不允许像'123e+4'这样的输入,那么正确编写的regex可能是最简单的解决方案。


你可以用这个python代码,它会发现字符串是数字还是浮点值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def typeofvalue(text):
    try:
        int(text)
        return 'int'
    except ValueError:
        pass

    try:
        float(text)
        return 'float'
    except ValueError:
        pass

    return 'str'

typeofvalue("1773171")