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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值