rns*_*nso 3 python string numeric decimal
字符串的isnumeric和isdecimal函数之间有什么区别(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
Run Code Online (Sandbox Code Playgroud)
我希望isdecimal()为“ 123.456”返回true,但事实并非如此。
这两种方法测试特定的Unicode字符类。如果字符串中的所有字符都来自指定的字符类(具有特定的Unicode属性),则测试为true。
isdecimal()不测试字符串是否为十进制数字。请参阅文档:
如果字符串中的所有字符均为十进制字符并且至少包含一个字符,则返回true,否则返回false。小数字符是可用于以10为基数的数字,例如U + 0660,ARABIC-INDIC DIGIT ZERO。十进制字符形式上是Unicode通用类别“ Nd”中的字符。
的.周期字符不是成员Nd类; 它不是十进制字符。
str.isdecimal()字符是的子集str.isnumeric(); 这将测试所有数字字符。同样,从文档中:
如果字符串中的所有字符均为数字字符,并且至少包含一个字符,则返回true,否则返回false。数字字符包括数字字符,以及所有具有Unicode数值属性的字符,例如U + 2155,VULGAR FRACTION IF FTHTH。形式上,数字字符是具有属性值Numeric_Type =数字,Numeric_Type =十进制或Numeric_Type =数字的字符。
Nd在Numeric_Type=Digit这里。
如果要测试字符串是否为有效的十进制数字,请尝试将其转换为浮点数:
def is_valid_decimal(s):
try:
float(s)
except ValueError:
return False
else:
return True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2526 次 |
| 最近记录: |