Pro151-泡面Python[Py#051]——3min-EasyCase 判断是否为数字

Python

3分钟练习

判断是否为数字

 今天我们尝试学习一个常用的模块,unicodedata,这个模块使用来识别万国码数据的,在爬虫中(尤其针对多语言环境),会经常用到。


实例代码和效果展示

 这里我们先通过自定义函数,建立一个判断输入内容是不是字符串的函数。
 使用 try ,尝试是否能将字符串转变为浮点型,如果可以执行,那么这个自定义函数就会返回“真”,如果出现了异常,就会通过 except-pass 跳过当前这段 try。
 第二个 try 就是通过导入 unicodedata 模块。使用模块中的 numeric 函数,可以将 unicode(万国码)类型的字符串转换成对应的数字,同时返回一个“真”
 如果两个 try 都没有执行成功,只都会报 except 之后 pass 过这一段代码,那么就会跳转到最后的一个 return False 。

#   自定义函数
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
 
    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass
 
    return False
自定义函数

测试效果

 可以直接复制下面这一段测试代码,运行观察效果。

print('测试字符串和数字')
print(is_number('foo'))   # False
print(is_number('1'))     # True
print(is_number('1.3'))   # True
print(is_number('-1.37')) # True
print(is_number('1e3'))   # True

print('============================') 

print('测试 Unicode')
print('阿拉伯语 5')
print(is_number('٥'))  # True
print('泰语 2')
print(is_number('๒'))  # True
print('中文数字')
print(is_number('四')) # True
print('版权号')
print(is_number('©'))  # False
实际运行效果

 当然也可以改成下面这两行,当时手动输入毕竟比较难尝试这么多国家的文字。

trystring = input()
print(is_number(trystring))
简化测试
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容