字符串的 isnumeric 和 isdecimal 函数有什么区别(https://www.tutorialspoint.com/python3/python_strings.htm https://www.tutorialspoint.com/python3/python_strings.htm)?他们似乎给出了相同的结果:
>>> "123456".isnumeric()
True
>>> "123456".isdecimal()
True
>>> "123.456".isnumeric()
False
>>> "123.456".isdecimal()
False
>>> "abcd".isnumeric()
False
>>> "abcd".isdecimal()
False
我期望isdecimal()
为“123.456”返回 true,但事实并非如此。
这两种方法测试特定的 Unicode 字符类。如果all字符串中的字符来自指定的字符类(具有特定的 Unicode 属性),测试为真。
isdecimal()
不测试字符串是否为十进制数。请参阅文档 https://docs.python.org/3/library/stdtypes.html#str.isdecimal:
如果字符串中的所有字符都是十进制字符并且至少有一个字符,则返回 true,否则返回 false。十进制字符是那些可用于构成以 10 为基数的数字的字符,例如U+0660,阿拉伯-印度数字零。形式上,十进制字符是 Unicode 通用类别“Nd”中的字符。
The .
期间字符不是成员Nd
类别;它不是十进制字符。
str.isdecimal()
字符是的子集str.isnumeric()
;这测试所有数字字符。再次,从文档 https://docs.python.org/3/library/stdtypes.html#str.isnumeric:
如果字符串中的所有字符都是数字字符,并且至少有一个字符,则返回 true,否则返回 false。数字字符包括数字字符以及所有具有 Unicode 数值属性的字符,例如: U+2155,粗俗分数五分之一。正式而言,数字字符是具有属性值 Numeric_Type=Digit、Numeric_Type=Decimal 或 Numeric_Type=Numeric 的字符。
Nd
is Numeric_Type=Digit
here.
如果你想测试一个字符串是否是一个有效的十进制数字,只需尝试将其转换为浮点数:
def is_valid_decimal(s):
try:
float(s)
except ValueError:
return False
else:
return True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)