str為字串s為字串
str.isalnum() 所有字元都是數字或者字母
str.isalpha() 所有字元都是字母
str.isdigit() 所有字元都是數字
str.isspace() 所有字元都是空白字元、t、n、r
檢查字串是數字/浮點數方法
float部分
>> float(`Nan`)
nan
>> float(`Nan`)
nan
>> float(`nan`)
nan
>> float(`INF`)
inf
>> float(`inf`)
inf
>> float(`-INF`)
inf
>> float(`-inf`)
inf
第一種:最簡單
def is_number(str):
try:
# 因為使用float有一個例外是`NaN`
if str==`NaN`:
return False
float(str)
return True
except ValueError:
return False
float例外示例
>>> float(`NaN`)
nan
使用complex()
def is_number(s):
try:
complex(s) # for int, long, float and complex
except ValueError:
return False
return True
綜合1
def is_number(s):
try:
float(s) # for int, long and float
except ValueError:
try:
complex(s) # for complex
except ValueError:
return False
return True
綜合2-還是無法完全識別
def is_number(n):
is_number = True
try:
num = float(n)
# 檢查 "nan"
is_number = num == num # 或者使用 `math.isnan(num)`
except ValueError:
is_number = False
return is_number
>>> is_number(`Nan`)
False
>>> is_number(`nan`)
False
>>> is_number(`123`)
True
>>> is_number(`-123`)
True
>>> is_number(`-1.12`)
True
>>> is_number(`abc`)
False
>>> is_number(`inf`)
True
第二種:只能判斷是整數
使用isnumeric()
# str必須是uniconde模式
>>> str = u"345"
>>> str.isnumeric()True
http://www.tutorialspoint.com/python/string_isnumeric.htm
http://docs.python.org/2/howt…
使用isdigit()
https://docs.python.org/2/lib…
>>> str = "11"
>>> print str.isdigit()
True
>>> str = "3.14"
>>> print str.isdigit()
False
>>> str = "aaa"
>>> print str.isdigit()
False
使用int()
def is_int(str):
try:
int(str)
return True
except ValueError:
return False
第三種:使用正則(最安全方法)
import re
def is_number(num):
pattern = re.compile(r`^[-+]?[-0-9]d*.d*|[-+]?.?[0-9]d*$`)
result = pattern.match(num)
if result:
return True
else:
return False
>>>: is_number(`1`)
True
>>>: is_number(`111`)
True
>>>: is_number(`11.1`)
True
>>>: is_number(`-11.1`)
True
>>>: is_number(`inf`)
False
>>>: is_number(`-inf`)
False