Moi*_*dri 62
您可以使用str.isdigit()和str.isalpha()分别检查给定字符串是否为正整数和字母.
样本结果:
# For alphabet
>>> 'A'.isdigit()
False
>>> 'A'.isalpha()
True
# For digit
>>> '1'.isdigit()
True
>>> '1'.isalpha()
False
Run Code Online (Sandbox Code Playgroud)
str.isdigit()False如果字符串是负数或浮点数,则返回.例如:
# returns `False` for float
>>> '123.3'.isdigit()
False
# returns `False` for negative number
>>> '-123'.isdigit()
False
Run Code Online (Sandbox Code Playgroud)
如果你还想检查负整数float,那么你可以编写一个自定义函数来检查它:
def is_number(n):
try:
float(n) # Type-casting the string to `float`.
# If string is not a valid `float`,
# it'll raise `ValueError` exception
except ValueError:
return False
return True
Run Code Online (Sandbox Code Playgroud)
样品运行:
>>> is_number('123') # positive integer number
True
>>> is_number('123.4') # positive float number
True
>>> is_number('-123') # negative integer number
True
>>> is_number('-123.4') # negative `float` number
True
>>> is_number('abc') # `False` for "some random" string
False
Run Code Online (Sandbox Code Playgroud)
上面的函数将返回True"NAN"(非数字)字符串,因为对于Python,它是有效的float,表示它不是数字.例如:
>>> is_number('NaN')
True
Run Code Online (Sandbox Code Playgroud)
为了检查数字是否为"NaN",您可以使用math.isnan():
>>> import math
>>> nan_num = float('nan')
>>> math.isnan(nan_num)
True
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想导入其他库来检查这一点,那么您可以通过比较它自己来检查它==.False当nanfloat与自身进行比较时,Python会返回.例如:
# `nan_num` variable is taken from above example
>>> nan_num == nan_num
False
Run Code Online (Sandbox Code Playgroud)
因此,上述功能is_number可以更新,返回False的"NaN"是:
def is_number(n):
is_number = True
try:
num = float(n)
# check for "nan" floats
is_number = num == num # or use `math.isnan(num)`
except ValueError:
is_number = False
return is_number
Run Code Online (Sandbox Code Playgroud)
样品运行:
>>> is_number('Nan') # not a number "Nan" string
False
>>> is_number('nan') # not a number string "nan" with all lower cased
False
>>> is_number('123') # positive integer
True
>>> is_number('-123') # negative integer
True
>>> is_number('-1.12') # negative `float`
True
>>> is_number('abc') # "some random" string
False
Run Code Online (Sandbox Code Playgroud)
上述功能仍然会返回你False的复数.如果您希望is_number函数将复数作为有效数字处理,则需要输入转换传递的字符串complex()而不是float().然后你的is_number功能将如下所示:
def is_number(n):
is_number = True
try:
# v type-casting the number here as `complex`, instead of `float`
num = complex(n)
is_number = num == num
except ValueError:
is_number = False
return is_number
Run Code Online (Sandbox Code Playgroud)
样品运行:
>>> is_number('1+2j') # Valid
True # : complex number
>>> is_number('1+ 2j') # Invalid
False # : string with space in complex number represetantion
# is treated as invalid complex number
>>> is_number('123') # Valid
True # : positive integer
>>> is_number('-123') # Valid
True # : negative integer
>>> is_number('abc') # Invalid
False # : some random string, not a valid number
>>> is_number('nan') # Invalid
False # : not a number "nan" string
Run Code Online (Sandbox Code Playgroud)
PS:每个检查的每个操作取决于数字的类型带来额外的开销.选择is_number适合您要求的功能版本.
| 归档时间: |
|
| 查看次数: |
98938 次 |
| 最近记录: |