首页 > 解决方案 > 在 Python2 和 3 中使用 isnumeric

问题描述

处理具有接受值的函数的应用程序,我试图查看它是int,float还是string. 在网上做了一些查找后,我发现isnumeric()isdigit()涵盖了 int 和 float 场景,并且 string 是默认的。

太棒了...问题解决了:)

不完全是!因为这个应用程序支持 Python 版本2.7.15, 3.4.8, 3.5.5,3.6.6并且我了解到 Python 2 isumeric 和 isdigit 适用于 unicode 而 Python 3 适用于字符串。

所以我的 CI 通过了 Python 3 的测试,但没有通过 Python 2 :(

有没有办法检查正在动态运行的 Python 版本,并从那里使用正确的函数实现?

标签: pythonpython-3.xpython-2.7python-unicode

解决方案


首先,您也可以在 Python 2.x 中使用isalpha()isdigit()处理字符串。其次,您可以尝试将变量转换为floatint查看操作是否引发异常。

for x in ['aa', '2.3', '4']:
  try:
    x = int(x)
    print x, ' is integer'
    continue
  except:
    pass    

  try:
    x = float(x)
    print x, 'is float'
    continue
  except:
    pass

  print x, 'is string'



aa is string
2.3 is float
4  is integer

推荐阅读