本文是一篇个人随笔,主要是介绍下如何用python判断一个字符串是否为小数,如有纰漏或粗浅,还请各位看官见谅。
我们知道python中有专门的函数来判断一个字符串是否为整数(isdigit()),但是没有相应的函数对是否为小数进行判断,网上也有很多人写过类似的函数,但是大部分显得比较笨重,代码量大,逻辑复杂,我在学习正则表达式的时候觉得用正则表达式是最简单方便易懂的,废话不多说,请看代码:
#判断字符串是否为小数(只针对小数)
def is_little_number(str):
#获取字符串中符合小数规则的所有子字符串的长度(如果该字符串是小数,那么长度只能是1)
number_count = len(re.findall(r'\d+\.{1}\d*', str))
#判断上述获取的长度是否非1,等于0表示字符串中无小数结构的子串,大于1表示不止一个目标子串
#显然这两种情况下字符串肯定不是小数,所以返回False
if number_count == 0 or number_count > 1:
return False
#如果上述长度等于1,说明该字符串可能是小数,也可能是包含小数以及其它字符的混合字符串
#用从中匹配出的小数字符串和原字符串对比,如果完全一致,表示原字符串就是小数,否则不是,
elif number_count == 1:
mumber_str = re.findall(r'\d+\.{1}\d*', str)[0]
if mumber_str == str:
return True
else:
return False
#只有以上一种情况下才能是小数,所以除此之外的所有情况都不是,故返回False
else:
return False
说明一下,该函数只针对小数判断,因为整数已经有特定函数,故此处只负责小数判断,思路和详解在代码中已比较详细,在此 不再赘述,如果大家有更简单高效的思路或者本文有不当之处欢迎留言,谢谢!