检查字符串是否为数字的Python函数
Python是一种高级编程语言,非常受欢迎。它是一种面向对象的语言,拥有包括模块、函数、类、异常处理和文件处理在内的丰富的标准库。其中一个非常有用的功能是检查字符串是否为数字。在本文中,我们将讨论如何使用Python检查字符串是否为数字。
首先,我们需要了解Python中的数字类型。Python支持三种不同类型的数字:整数、浮点数和复数。整数是所有正整数、负整数和零的集合。如果一个数字包含小数部分,它就是浮点数。复数是由一个实数和一个虚数组成的数。
Python提供了isnumeric()方法,可以用来检查一个字符串是否为数字。但是需要注意的是,这个方法只能检查一个字符串是否为Unicode数字,而不是所有数字类型。
下面是使用isnumeric()方法检查字符串是否为数字的示例:
str1 = "123" str2 = "12.3" str3 = "一二三" print(str1.isnumeric()) print(str2.isnumeric()) print(str3.isnumeric())
执行上述代码后,输出结果如下:
True False True
我们可以看到,isnumeric()方法将数字字符串“123”和中文数字“一二三”都视为数字,但对包含小数点的字符串“12.3”返回False。
如果我们需要检查一个字符串是否是整数或浮点数,我们可以使用Python内置的isdigit()和isdecimal()方法。isdigit()方法只返回True,如果字符串全是数字(0-9),否则返回False。但是,isdigit()方法也无法判断包含负号的数字字符串。
isdecimal()方法与isdigit()方法类似,只能用来检查一个字符串是否包含所有的十进制数字。它不检查字符串中是否包含小数点或其他特殊字符。如果一个字符串包含其他字符,或者是一个浮点数,isdecimal()方法将返回False。
让我们看看如何使用isdigit()和isdecimal()方法来判断一个字符串是否是整数或浮点数的示例:
def is_number(string):
if string.isdigit():
return True
elif string.count('.') == 1:
splited = string.split('.')
if splited[0].isdigit() and splited[1].isdigit():
return True
return False
str1 = "123"
str2 = "12.3"
str3 = "一二三"
str4 = "-123"
str5 = "12.0"
print(is_number(str1))
print(is_number(str2))
print(is_number(str3))
print(is_number(str4))
print(is_number(str5))
在上述示例中,我们使用自定义的is_number()函数来检查字符串是否为数字。该函数首先使用isdigit()方法检查字符串是否为整数。如果字符串中包含小数点,则将其分割成两个字符串,然后使用isdigit()方法检查它们是否都是整数。如果两个子字符串都是整数,则认为字符串是一个浮点数,返回True。如果字符串不是整数,也不是浮点数,则返回False。
执行上述代码后,输出结果如下:
True True False False True
我们可以看到,上述代码能够准确地识别整数和浮点数,并且不将中文数字或包含特殊字符的字符串视为数字。
综上所述,Python提供了许多不同的方法来检查字符串是否为数字。我们可以使用isnumeric()方法来检查字符串中是否包含Unicode数字,使用isdigit()方法来检查字符串是否为整数,使用isdecimal()方法来检查字符串是否包含十进制数字。如果需要检查一个字符串是否为浮点数,我们需要编写自定义函数来进行检查。根据具体应用情况,我们可以选择使用这些方法中的一个或多个来检查字符串是否为数字。
