由于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)
网友评论