欢迎访问宙启技术站
智能推送

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程序。