One - One Code All

Blog Content

Python判断字符串是否为字母或者数字(浮点数)

Python   2017-01-24 22:37:17


str为字符串s为字符串


str.isalnum() 所有字符都是数字或者字母


str.isalpha() 所有字符都是字母


str.isdigit() 所有字符都是数字


str.isspace() 所有字符都是空白字符、\t、\n、\r


检查字符串是数字/浮点数方法


>> 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/howto/unicode.html


使用isdigit()


https://docs.python.org/2/library/stdtypes.html#str.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



上一篇:Python中字典合并的多种方法
下一篇:python关键字global和nonlocal的用法

The minute you think of giving up, think of the reason why you held on so long.