Python 判断是否为整数、小数的几种方法
Python 判断是否为整数
Python 有默认的整数判断函数 str.isdigit() ,但其无法判断负整数,因此需要先把负整数转化为无符号的整数
代码示例:
@classmethod def is_number(cls, numStr): ''' 字符串是否是整数 ''' flag = False numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号 if str(numStr).isdigit(): flag = True return flag
补充知识:
str为字符串
str.isalnum() 所有字符都是数字或者字母
str.isalpha() 所有字符都是字母
str.isdigit() 所有字符都是数字(不能判断正数(+)、负数(-)符号)
str.islower() 所有字符都是小写
str.isupper() 所有字符都是大写
str.istitle() 所有单词都是首字母大写
str.isspace() 所有字符都是空白字符、\t、\n、\r
Python 判断是否为小数
Python 判断小数至少有三种方法,分别如下
方法1:正则匹配 re
@classmethod def is_float(cls, numStr): ''' 字符串是否是浮点数(整数不算小数) ''' flag = False numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号 try: reg = re.compile(r'^[-+]?[0-9]+\.[0-9]+$') res = reg.match(str(numStr)) if res: flag = True except Exception as ex: print("is_float() - error: " + str(ex)) return flag
正则表达式说明:
'^[-+]?[0-9]+\.[0-9]+$'
^表示以这个字符开头,也就是以[-+]开头,[-+]表示字符-或者+
?表示0个或1个,也就是说符号+和1是可选的,也可以没有。
[0-9]表示0到9的一个数字,+表示1个或多个,也就是整数部分。
\.表示的是小数点,\是转义字符因为.是特殊符号(匹配任意单个除\r\n之外的字符),所以需要转义。
小数点后的也需要是数字,
$表示字符串以此结尾。
整个匹配中不可以出现非数字或其他符号。
方法2:浮点转化,异常判断
@classmethod def is_float2(cls, numStr): ''' 字符串是否是浮点数(整数算小数) ''' flag = False numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号 try: numFloat = float(numStr) flag = True except Exception as ex: print("is_float() - error: " + str(ex)) return flag
方法3:逐个字符判断是否为数字或小数点
@classmethod def is_float3(cls, numStr): ''' 字符串是否是浮点数(整数算小数) ''' flag = True numStr = str(numStr).strip().lstrip('-').lstrip('+') # 去除正数(+)、负数(-)符号 floatNum = string.digits + "." for i in range(len(numStr)): if numStr[i] in floatNum: continue else: flag = False return flag
测试代码
if __name__ == '__main__': numStr = 23 print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr)) numStr = '23' print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr)) numStr = -23 print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr)) numStr = -23.123 print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr)) numStr = '23aw' print(numStr, " : ", YGDTime.is_number(numStr), " : ", YGDTime.is_float(numStr))
运行结果:
(23, ' : ', True, ' : ', False)
('23', ' : ', True, ' : ', False)
(-23, ' : ', True, ' : ', False)
(-23.123, ' : ', False, ' : ', True)
('23aw', ' : ', False, ' : ', False)
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-09-22 05:58:20
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!