首先,在Python 中对于 字符串 Sting 类型来说,存在很多的方法,如下:
TAB
键,ipython 会提示 字符串 能够使用的 方法 如下:In [1]: hello_str.
hello_str.capitalize hello_str.isidentifier hello_str.rindex
hello_str.casefold hello_str.islower hello_str.rjust
hello_str.center hello_str.isnumeric hello_str.rpartition
hello_str.count hello_str.isprintable hello_str.rsplit
hello_str.encode hello_str.isspace hello_str.rstrip
hello_str.endswith hello_str.istitle hello_str.split
hello_str.expandtabs hello_str.isupper hello_str.splitlines
hello_str.find hello_str.join hello_str.startswith
hello_str.format hello_str.ljust hello_str.strip
hello_str.format_map hello_str.lower hello_str.swapcase
hello_str.index hello_str.lstrip hello_str.title
hello_str.isalnum hello_str.maketrans hello_str.translate
hello_str.isalpha hello_str.partition hello_str.upper
hello_str.isdecimal hello_str.replace hello_str.zfill
hello_str.isdigit hello_str.rfind
在这篇文章中,我们只讨论其中的三个方法:
咋一看,这三个方法都是判断字符串是否只包含数字,但是其实它们还是有很大的区别的:
string.isdecimal() | 如果 string 只包含数字则返回 True,全角数字 |
string.isdigit() | 如果 string 只包含数字则返回 True,全角数字 、⑴ 、\u00b2 |
string.isnumeric() | 如果 string 只包含数字则返回 True,全角数字 ,汉字数字 |
1、都能判断 阿拉伯数字:
# 判断字符串是否只包含数字
num_str = "1"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
1
True
True
True
2、都不能判断小数:
# 判断字符串是否只包含数字
num_str = "1.1"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
1.1
False
False
False
3、与 isdecimal() 相比,isdigit() 和 isnumeric() 都能判断 unicode 编码的数字字符串:如 ⑴
、①和 \u00b2
# 判断字符串是否只包含数字
num_str = "\u00b2"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
num_str_1 = "⑴"
print(num_str_1)
print(num_str_1.isdecimal())
print(num_str_1.isdigit())
print(num_str_1.isnumeric())
num_str_2 = "①"
print(num_str_2)
print(num_str_2.isdecimal())
print(num_str_2.isdigit())
print(num_str_2.isnumeric())
²
False
True
True
⑴
False
True
True
①
False
True
True
4、与 isdigit() 相比, isnumeric() 还能判断 中文数字:如 一千一百零一
# 判断字符串是否只包含数字
num_str = "一千一百零一"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
一千一百零一
False
False
True
# 判断字符串是否只包含数字
num_str = "壹贰叁肆伍陆柒捌玖拾佰仟萬亿"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
壹贰叁肆伍陆柒捌玖拾佰仟萬亿
False
False
True