python資料處理——字串轉數值型別
阿新 • • 發佈:2021-07-07
使用背景:
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))