加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:00:24 所属栏目:Python 来源:网络整理
导读:str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() 所有字符都是空白字符、t、n、r 检查字符串是数字/浮点数方法 float部分 ?float('Nan')nan?float('Nan')nan

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


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读