1. 程式人生 > 其它 >python資料處理——字串轉數值型別

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))