Python string.isdecimal() 函数用法

2023-09-17 22:21:22

如果字符串中的所有字符都是十进制字符,则 isdecimal() 方法返回 True。如果不是,则返回 False。

十进制字符是可用于形成以 10 为基数的数字的字符。所有Unicode General Category"Nd"都被视为十进制字符。

语法:

str.isdecimal()

Parametrs:

没有。

返回值:

如果字符串中的所有字符都是小数,则返回 True;否则,即使有一个字符不是小数,也返回 False。

以下示例演示isdecimal()方法。

numstr = '12345'
print(numstr.isdecimal()) # returns True
numstr = '10.50'
print(numstr.isdecimal()) # returns False
alnumstr = '123A'
print(alnumstr.isdecimal()) # returns False
mystr = 'Python'
print(mystr.isdecimal()) # returns False

输出:

True
False
False
False

如果字符串包含空格、符号或字母,则 isdecimal() 方法将返回 False。

amount = '$100'
print(amount.isdecimal())
code = '#007'
print(mystr.isdecimal())

输出:

False
False

Unicode 常规类别"Nd"下的所有字符都是小数,例如 isdecimal()返回 True,因为阿拉伯十进制 2 是小数٢

arabicdecimal = '٢'  # 2 in Arabic
print(arabicdecimal.isdecimal())

输出:

True

上标和下标(通常使用 unicode 编写)被视为数字字符,而不是十进制字符。因此,如果字符串包含这些字符以及十进制字符,则isdecimal()返回 False。

mystr = 'u00B23455'     # returns subscript 2 with the number 3455
print(mystr.isdecimal())
mystr = 'u2156' # Unicode chars of ⅖
print(mystr.isdecimal())
mystr = 'u0032' # Unicode chars of 2
print(mystr.isdecimal())

输出:

False
False
True

下表列出了基于给定输入的isdecimal()isdigit()isnumeric()方法之间的差异:

Input String Valueisdecimal()isdigit()isnumeric()
'123'TrueTrueTrue
'$123'FalseFalseFalse
'123.50'FalseFalseFalse
'123a'FalseFalseFalse
'¾'FalseFalseTrue
'u0034'TrueTrueTrue