python數據處理——字符串轉數值類型


使用背景:

       python是弱類型語言,因此在處理數據時,需要對數據進行計算,但數據中存在非數值類型時,容易導致程序運行報錯。基於此目的,編寫如下方法解決字符串類型向數值類型轉換。

 

具體實現:

        1、需要知道是否可以轉換為一個數字;

        2、需要處理數據是float類型或負數的數值類型情況;

from numbers import Number


def is_number(num_str):
    """
    判斷數據是否為一個數字

    :param num_str: 字符串對象
    :return:
    """
    """
    判斷數據是否為一個數字

    :param num_str: 字符串對象
    :return: 布爾值   True 是一個數字   False  不是一個數字   None  本就是數值類型
    """
    # 防止非字段類型類型輸入報錯
    if isinstance(num_str, Number):
        return None
    elif not isinstance(num_str, str):
        return False

    if num_str.isdigit():
        return True
    # 對Float類型的數字進行判斷
    if num_str.count('.') == 1:
        num_str_list = num_str.split('.')
        left = num_str_list[0]
        right = num_str_list[1]
        if left.startswith('-') and left.count('-') == 1 and right.isdigit():
            _left = left.split('-')[1]
            if _left.isdigit():
                return True
        elif left.isdigit() and right.isdigit():
            return True
    return False

          3、需要考慮到數據本身就是數值類型

          4、兼容其他未知傳入類型或字符串轉化失敗情況

def str_to_num(value, default=None, num_type=int):
    """
    將字符串類型轉化為數據類型

    :param value: 需要轉化的值,不一定需要是字符串類型
    :param default: 設置轉換失敗返回數值,默認原值
    :param num_type: 設置轉換成的數據類型
    :return:
    """
    num_flag = is_number(value)
    if num_flag:
        return num_type(value)
    elif num_flag is None:
        return num_type(value)
    return value if default is None else default

 

使用案例:

def clear_list(list_data):
    for data in list_data:
        for value in data.keys():
            data[value] = str_to_num(data.get(value))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM