Python函数:如何检测字符串是否为数字
发布时间:2023-06-14 12:19:45
在程序中,经常需要检测字符串是否为数字,这在输入验证和数据处理等方面非常常见。Python提供了多种方法来检测字符串是否为数字。
方法一:使用isdigit方法
Python中的字符串对象有一个方法叫做isdigit。isdigit()方法用于判断字符串中的字符是否都是数字,如果字符串中所有的字符都是数字则返回True,否则返回False,例如:
string1 = "1234" string2 = "1a23" string1.isdigit() # True string2.isdigit() # False
方法二:使用isnumeric方法
isnumeric()方法用于判断字符串中的字符是否都是数字,但是该方法不仅仅适用于阿拉伯数字,也适用于罗马数字、中文数字等,例如:
print('1234'.isnumeric()) # True
print('Ⅴ'.isnumeric()) # True
print('五'.isnumeric()) # True
print('123a'.isnumeric()) # False
方法三:使用isdecimal方法
isdecimal()方法用于判断字符串中的字符是否都是十进制数,如果字符串中所有的字符都是十进制数字,则返回True,否则返回False,例如:
print('1234'.isdecimal()) # True
print('13.45'.isdecimal()) # False
方法四:使用正则表达式
正则表达式可以用来匹配不同的模式,可以使用正则表达式来判断字符串是否为数字。以下代码使用正则表达式判断字符串是否整数或浮点数:
import re
def is_number(str):
pattern = r'^[-+]?[0-9]+\.[0-9]+$'
p = re.compile(pattern)
if p.match(str):
return True
else:
return str.isdigit()
print(is_number('1234')) # True
print(is_number('13.45')) # True
print(is_number('5.0e+2')) # True
print(is_number('-1234')) # True
print(is_number('+1234')) # True
方法五:使用try-except语句
此方法通过尝试把字符串转换为数字来检测字符串是否为数字,并通过异常处理来判断字符串是否为数字,如果字符串为数字则不会发生任何异常,否则会抛出ValueError异常,例如:
def is_number(str):
try:
float(str)
return True
except ValueError:
return False
print(is_number('1234')) # True
print(is_number('13.45')) # True
print(is_number('5.0e+2')) # True
print(is_number('-1234')) # True
print(is_number('+1234')) # True
综上所述,Python提供了多种方法来检测字符串是否为数字,从简单的isdigit、isnumeric、isdecimal方法到复杂的正则表达式和try-except语句,每种方法都有其应用场景。选择最适合自己应用场景的方法可以帮助我们编写更加高效、准确、易于维护的Python程序。
