在Python中检查unicode是数字还是小数的有效方法

时间:2014-01-29 19:47:28

标签: python unicode

检查unicode是数字还是小数的最有效方法是什么?我知道我可以做各种if语句:

 if unicode.isdigit(self.initial_bet.text) and  unicode.isdigit(self.initial_odds.text)... 

unicode可以是两个类型,两个十进制类型,两个数字类型或两者的组合,是否有更好的方法来检查除了许多if语句以外的其他方法?

Pseudocoe:

如果a是数字而b是数字:     return func

elif a是小数,b是小数:     return func

elif a是一个数字,b是一个小数:     return func

依旧......

否则     做别的事

2 个答案:

答案 0 :(得分:4)

如果所有输入都需要是小数或数字,则以下内容将起作用:

conds = [unicode.isdigit, unicode.isdecimal]
check = lambda v: any(f(v) for f in conds)

vals = [self.initial_bet.text, self.initial_odds.text]

if all(map(check, vals)):
    return func
# do something else

这适用于任意数量的输入和任意数量的条件,例如每个输入必须满足至少一个条件。

另外,似乎unicode.isdigit是unicode.isdecimal功能的超集,因此任何小数都应该是一个数字 - 大部分区别在于各种unicode脚本,但是对于ASCII范围,函数应该是有相同的行为。

答案 1 :(得分:0)

我不完全明白你在做什么,但是你尝试过使用isinstance(值,类型)。

if isinstance(a, int) and isinstance(b, float):
    return foo




res = [i for i in map(lambda x: isinstance(x, int) or isinstance(x, float),[.5, 'a', 3, 4, 5])]