简单的函数,考虑了大多数情况:
def checking(val):
if type(val) == bool:
return 'bool'
dType = 'str'
try:
float(val)
dType = 'float'
if str(int(val)) == str(val):
dType = 'int'
except:
pass
return (dType)
测试
for item in [0, 1,'1',-1,'-1',True, False, 'True','False', 'string', 0.0,'0.0',1.0, '1.0',1.3, '1.3',-1.3, '-1.3','2.3E12','-2.3E12']:
print (item,': ', checking(item))
打印输出:
0 : int
1 : int
1 : int
-1 : int
-1 : int
True : bool
False : bool
True : str
False : str
string : str
0.0 : float
0.0 : float
1.0 : float
1.0 : float
1.3 : float
1.3 : float
-1.3 : float
-1.3 : float
2.3E12 : float
-2.3E12 : float
检查函数的逻辑很简单。如果一个字符串确实是非数字(不是浮点数或整数),那么它无法转换为浮点数,会抛出异常并返回'str'。如果它是数字,则默认可以转换为浮点数。一旦转换为浮点数,我们需要检查这个数字是否是真正的整数。因此,我们通过将其转换为字符串来比较其字符串表示,以确定它是否是真正的整数。