天天看點

python判斷字母數字_Python判斷字元串是否為字母或者數字(浮點數)

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

使用isdigit()

>>> 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