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)

 

 

参考推荐

Python format 格式化字符串

Python 正则匹配re模块

Python学习入门(13)——正则表达式