我知道字符串方法 str.isdigit , str.isdecimal 和 str.isnumeric 。
我正在寻找一种内置方法来检查字符是否是代数,这意味着它可以在十进制数的声明中找到。
上述方法为' -1' 和' 1.0' 返回 False
我可以使用 isdigit 从字符串中检索正整数:
string = 'number=123'
number = ''.join([d for d in string if d.isdigit()]) # returns '123'
但这对负整数或浮点数不起作用。
想象一个名为 isnumber 的方法,其工作方式如下:
def isnumber(s):
for c in s:
if c not in list('.+-0123456789'):
return False
return True
string1 = 'number=-1'
string2 = 'number=0.1'
number1 = ''.join([d for d in string1 if d.isnumber()]) # returns '-1'
number2 = ''.join([d for d in string2 if d.isnumber()]) # returns '0.1'
这个想法是针对一组"基本"代数字符。该字符串不必包含有效的Python编号。它也可以是 255.255.0.1 等IP地址。 。 是否存在一个方便的内置工具?
如果没有,为什么不呢?它比python函数更有效,非常有用。我在 stackoverflow 上看到了很多使用 str.isdigit()从字符串中检索正整数的示例。有没有理由没有这样的内置,尽管有三种不同的方法可以做几乎相同的事情?
答案 0 :(得分:-1)
不存在此类功能。有许多奇怪的字符可以是Python中数字文字的一部分,例如{1}},o
和x
在非十进制基数的整数前缀中,{{{ 1}}引入浮点数的指数部分。我认为那些加上十六进制数字(b
和e
)和符号字符以及小数点都是您需要的。
你可以自己组合一个带有正确角色的字符串并对其进行测试:
0-9
如果您使用它来测试混合文本和数字,那将会得到一堆垃圾:
A-F
它给你一堆垃圾的事实可能就是为什么没有内置函数可以做到这一点。如果要匹配字符串中的某种数字,请编写适当的正则表达式以匹配该特定类型的数字。不要试图逐个字符地进行,或者尝试匹配所有不同类型的Python数字。