问题描述
正在处理一个应用程序,该应用程序具有一个接受值的函数,我正在尝试查看它是 int
、float
还是 string
。在网上看了一些之后,我发现 isnumeric()
和 isdigit()
涵盖了 int 和 float 场景,字符串是默认的。
太棒了……问题解决了:)
不完全是!因为此应用程序支持 Python 版本 2.7.15
、3.4.8
、3.5.5
、3.6.6
,所以我了解到 Python 2 isnumeric 和 isdigit 适用于 unicode,而 Python 3 则适用于字符串。
所以我的 CI 通过了 Python 3 的测试,但没有通过 Python 2 :(
有没有办法检查正在动态运行的 Python 版本并从那里使用函数的正确实现?
解决方法
首先,您也可以在 Python 2.x 中对字符串使用 isalpha()
和 isdigit()
。
其次,您可以尝试将变量转换为 float
和 int
,然后查看操作是否引发异常。
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
,
为了方便 unicode 方法的跨版本移植,您需要在 Python 3 上将 unicode
设置为 str
的别名。
if sys.version_info.major == 3:
# Python 3
unicode = str
def isnumeric(s):
return unicode(s).isnumeric()