今天遇到线上一个BUG,用户导入数据时,将某个字段填写一个负数会导致服务器报错,大概的代码如下:

1
2
3
4
if isinstance(obj, str) and obj.isdigit():
	obj = int(obj)
else:
	raise Exception("fuck you")

但是,负数并不能直接使用isdigit判断,看下截图: file 所以,还需要做一些转换,满足这个需求:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def isdigit(num: str) -> bool:
	if not num:
		return False
	if num[0] == '-':
		return num[1:].isdigit()
	return num.isdigit()
if isinstance(num, str) and isdigit(num):
	num = int(num)
else:
	raise Exception("fuck you")