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))
原文地址:https://www.cnblogs.com/yumoblogs/p/14983703.html