zoukankan      html  css  js  c++  java
  • 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))
  • 相关阅读:
    JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
    An internal error occurred during: "Launching New_configuration"
    Android 创建虚拟机时“提示no system images installed for this target”
    [转] 传说中的WCF(2):服务协定的那些事儿
    [转] 传说中的WCF
    python的包管理
    python入门常用方法(转json,模拟浏览器请求头,写入文件)
    python读写数据篇
    python跳坑手记
    python爬虫入门篇
  • 原文地址:https://www.cnblogs.com/yumoblogs/p/14983703.html
Copyright © 2011-2022 走看看