在开发过程中,经常会遇到这样的场景,要判断这个字符串里面是否有我们想要的字符或者是数字,如果我们自己去实现的话或许会比较困难,或者就是效率不高,
其实很多时候我们的开发语言一般都是会封装好一些常用函数的,我们只要去调用就可以了,当然了,我们还可以尝试去了解其实现的原理,方便后面有些情况覆盖不到的话,我们可以重新定义一个这样的方法去扩展我们的功能。
今天呢,给大家分享一个Python自带的方法,非常好用,而且也非常全面
python版本:3.9.12
开发工具:PyCharm
操作系统:Windows 11
首先为了方便使用,我们先封装一个方法,然后在方法里面做判断,最后输出这个字符串里面是不是含有数字,具体代码如下
def isNumber(num):
try:
if num.isdigit():
print('isdigit->{}是数字'.format(num))
else:
print('isdigit->{}不是数字'.format(num))
except (TypeError, ValueError):
pass
try:
import unicodedata
if unicodedata.numeric(num):
print('numeric->{}是数字'.format(num))
else:
print('numeric->{}不是数字'.format(num))
except (TypeError, ValueError):
pass
isNumber('1')
isNumber('d')
isNumber('d2')
#isNumber(2) #这里会报错
isNumber('⑯')
isNumber('⒃')
is_number('⒗')
is_number('Ⅴ')
is_number('Ⅳ')
is_number('❻')
is_number('㈥')
is_number('⅔')
is_number('贰')
is_number('贰')
结果如下
isdigit->1是数字
numeric->1是数字
isdigit->d不是数字
isdigit->d2不是数字
isdigit->⑯不是数字
numeric->⑯是数字
isdigit->⒃不是数字
numeric->⒃是数字
isdigit->⒗不是数字
numeric->⒗是数字
isdigit->Ⅴ不是数字
numeric->Ⅴ是数字
isdigit->Ⅳ不是数字
numeric->Ⅳ是数字
isdigit->❻是数字
numeric->❻是数字
isdigit->㈥不是数字
numeric->㈥是数字
isdigit->⅔不是数字
numeric->⅔是数字
isdigit->贰不是数字
numeric->贰是数字
isdigit->贰不是数字
numeric->贰是数字
看到这个结果,可以看到方法numeric()比isdigit()好用,判断范围更广,不管是阿拉伯数字还是中文数字或者其他数字的表现形式,numeric()方法都能识别出来,不得不说这块确实很强大,但是具体用哪个方法就要自己去判断了,毕竟不同的业务场景使用的规则不一样。