
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))
简化测试