python變數型別格式化,結果補全值
阿新 • • 發佈:2019-01-28
在python對資料進行儲存的時候,經常會遇到型別的錯誤,或者缺少某欄位儲存是吧。就隨手寫了一個簡單的工具類
1,判斷值是否是int
# 通過丟擲異常
def is_int_by_except(value):
value = str(value)
try:
int(value)
return True
except ValueError:
# print "%s ValueError" % value
return False
我是通過最常見的異常做處理
2,判斷值是否是float
判斷是否是float的方法有很多,只要能實現都可以def is_float_by_except(string): str1 = str(string) if str1.count('.') != 1: # 判斷小數點是不是大於1 return False elif str1.isdigit(): return False # 判斷是不是整數 else: new_str = str1.split('.') # 按小數點分割字元 frist_num = new_str[0] # 取分割完之後這個list的第一個元素 if frist_num.count('-') > 1: # 判斷負號的格數,如果大於1就是非法的 return False else: frist_num = frist_num.replace('-', '') # 把負號替換成空 if frist_num.isdigit() and new_str[1].isdigit(): # 如果小數點兩邊都是整數的話,那麼就是一個小數 return True else: return False
3,然後就是呼叫方法check值的型別
其實很簡單不是嘛,呼叫一下就可以了def check_result_type(result): """ 檢查儲存結果的型別 :param result: 需要格式化的結果 :return: """ if is_int_by_except(result): return int(result) elif is_float_by_except(result): return float(result) else: return result
4,然後就是資料的補全並賦值“0”
python寫起來很舒服。def format_result(result, rows): """ 格式化補全結果 :param result:結果 :param rows: 行 :return: 格式化後的結果 """ for row in rows.keys(): if row in result.keys(): result[row] = check_result_type(result[row]) else: if rows.get(row) == "int": result[row] = 0 elif rows.get(row) == "float": result[row] = 0.00 else: result[row] = "0" return result
5,寫個main方法庫測試一下
class CheckResultType(object):
def __init__(self):
self.result = {"id": "2333", "name": "張三", "value": 1111, "type": 9, "keyword_task_id": 3222.0}
def format_result(self):
types = {"id": "int",
"name": "string",
"value": "float",
"type": "int",
"keyword_task_id": "int",
"class": "int"}
print format_result(self.result, types)
if __name__ == '__main__':
CheckResultType().format_result()
簡單直接。