1. 程式人生 > >python變數型別格式化,結果補全值

python變數型別格式化,結果補全值

在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 = {"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()

簡單直接。