【python】eval()方法二次封装;判断s是否为数字 方法

由于python自带的eval()处理null,true,false(均为java返回结果)会报异常,故需对该三种情况做特殊处理


# 判断s是否为数字,包括负数 (- 开头),正数(+开头), 小数(带.); 返回True, False
# 若需进一步判断是正数还是浮点数。则对处理结果在另做处理即可,参见示例
def is_numeric(s):
    if s.startswith("-") or s.startswith("+") or "." in s:
        return all(c in "0123456789.+-" for c in s)
    else:
        return all(c in "0123456789" for c in s)


# eval()方法二次封装
def eval_str(str_data):
    # eval()对特殊值处理
    null = ""
    true = True
    false = False
    return eval(str_data)


# 示例
sval = 1.111
if is_numeric(sval):
    if "." in sval:
        sval = float(sval)
    else:
        sval = int(sval)

你可能感兴趣的:(【python】eval()方法二次封装;判断s是否为数字 方法)