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)
参考推荐: