在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
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
判斷是否是float的方法有很多,只要能實現都可以
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」
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
python寫起來很舒服。
5,寫個main方法庫測試一下
class checkresulttype(object):
def __init__(self):
self.result =
def format_result(self):
types =
print format_result(self.result, types)
if __name__ == '__main__':
checkresulttype().format_result()
簡單直接。
python 變數的格式化輸出
一 常見的格式化型別及輸出表示式 格式化字元 含義 s 字串 d 整數。例子 02d表示兩位數,不足兩位,用0填充 f小數。例子 2f,表示兩位小數 百分比 二 例項 1 我的名字是 name input 請輸入姓名 print 我的名字是 s,請多多關照 name output 請輸入姓名 小明 ...
變數的格式化
格式化字元 含義 s 字串 d 有符號十進位制整數,06d表示輸出的整數顯示位數,不足的地方使用0補全 f浮點數,02f表示小數點後只顯示兩位 輸出 定義字串變數 name,輸出我的名字叫小明name 小明 print 我的名字叫 s name 我的名字叫小明 定義整數變數 student no,輸...
python 格式化和format格式化
格式 name flags width precision typecode name 可選,用於選擇指定的key flags 可選,可提供的值有 右對齊,整數前加正號,負數前加負號 左對齊,正數錢無符號,負數前加負號 空格 右對齊 正數前加空格,負數前加負號 0 右對齊,正數前無符號,負數前加負號...