栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 判断字符串是否为整数、小数或布尔值

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 判断字符串是否为整数、小数或布尔值

def check_value(value):
    """判断字符串是否为整数、小数或bool值

    参数:value为字符串
    返回:如果是整数、小数或bool值,则返回相应类型,否则返回字符串类型
    """
    if value.count(".") != 1:  # 非小数
        if value.isdigit():  # 判断是否为正整数
            return int(value)
        elif value.count("-") == 1 and value.startswith("-"):  # 判断是否为负整数
            num = value.split("-")[-1]
            if num.isdigit():
                return int(value)
            else:
                return check_bool(value)
        else:
            return check_bool(value)
    else:  # 可能为小数
        left = value.split(".")[0]
        right = value.split(".")[1]
        if right.isdigit():
            if left.isdigit():  # 是否为正小数
                return float(value)
            elif left.count("-") == 1 and left.startswith("-"):  # 是否为负小数
                left_num = left.split("-")[-1]
                if left_num.isdigit():
                    return float(value)
                else:
                    return check_bool(value)
            else:
                return check_bool(value)
        else:
            return check_bool(value)


def check_bool(value):
    """判断字符串是否为bool值

    参数:value为字符串
    返回:如果是true/false, on/off(不区分大小写),则返回True, False,否则返回字符串类型
    """
    if value.title() in ("True", "On"):  # title()函数将字符串的首字母大写,其余字母全小写
        return True
    elif value.title() in ("False", "Off"):
        return False
    else:
        return value

大致思路:

1、根据小数点判断是否为小数

2、判断小数点两边的是否为整数(需考虑负号的情况)

3、注意:isdigit() 方法只能判断正整数,不能判断负整数,所以需要额外判断一下负整数的情况。

4、如果需要返回非整数、小数的字符串,就要像上面那样补全else的return,否则会出现漏掉一些字符串的情况,导致一些字符串输出为None

5、可以直接使用,调用check_value()函数即可,参数为字符串。

6、我自己用这个函数把 ini 的配置文件全部转化为Python 字典。

参考文章:

python判断字符串是否为小数的方法-Python学习网

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号