Python学习笔记:判断输入是否为数值

〇、判断数据框中非数值的取值

data.loc[data['score'].apply(lambda x: False if str(x).isdigit() else True), 'score'].values

一、isinstance

判断输入是否为整数或者浮点数,可利用 ininstance 函数对输入类型是否符合进行判断。

a = 10
b = 'gg'
isinstance(a, (int, float)) # True
isinstance(b, (int, float)) # False

二、replace和isdigit

利用 replace 替换掉字符串中的逗号(部分财务计数法),然后利用 isdigit 进行判断。

a = 10
a = '10,20,30'
str(a).replace(',', '').isdigit() # True

isdigit 方法检测字符串是否只由数字组成,只对0和正数有效。

str.isdigit()

三、isnumeric

isnumeric() 方法检测字符串是否由数字组成。包括:Unicode数字、全角数字(双字节)、罗马数字、汉字数字。

str.isnumeric()

a = 'hider1214'
a.isnumeric() # False

b = '12345'
b.isnumeric() # True

四、粗暴法

if -999999999 < input < 999999999

五、优化方法

isdigit() 方法只对正整数有效,负数及小数均返回不正确。

# 判断是否为数字
def is_number(s):
    try:  # 如果能运行则返回True  
        float(s)
        return True
    except ValueError:  # 标准异常“传入无效的参数”
        pass
    try:
        import unicodedata # 处理 ASCII 码的包
        unicodedata.numeric(s) # 转换为浮点数
        return True
    except (TypeError, ValueError):
        pass
        return False
        
is_number(1)      # True
is_number(1.0)    # True
is_number(0)      # True
is_number(-2)     # True
is_number(-2.0)   # True
is_number('aaa')  # False
is_number('1e3')  # True
is_number('四')  # True

六、继续优化

针对多个汉字数字,通过遍历解决。

针对全角数字,进一步优化。

具体参考最后一个参考链接。

参考链接:python中判断一个数值的方法

参考链接:Python 判断输入是否是数字的四种方法

参考链接:Python isdigit()方法

参考链接:Python3 isnumeric()方法

参考链接:Python 判断字符串是否为数字

posted @ 2022-08-26 16:10  Hider1214  阅读(3415)  评论(0编辑  收藏  举报