Python判断字符串是否为数字,浮点数或者字母

 更新时间:2026年04月15日 08:56:54   作者:躬行见万象  
在Python中处理字符串的函数比较丰富,本文介绍了在Python中如何判断和转换字符串,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

前言

在Python中处理字符串的函数比较丰富,有时需要把字符串转化为整形、浮点型等;转换过程中,发现有时会报错,比如字符串“12*76”,转换为整形,直接转换int(“12*76”),会报无法转换的错误的,因为*无法转换为整形;所以在转换前,需要先进行判断该字符串的类型。

判断字符串是否为数字(整形)

这个直接调用python的库就可以了哈,假设str为字符串

str.isdigit() :判断所有字符都是数字(整形)   

返回值 True:该字符串都为数字;False:该字符串不都是数字。

str.isalnum() 判断所有字符都是数字或者字母    

返回值 True:该字符串都为数字或者字母;False:该字符串不都是数字或者字母。

判断字符串是否为浮点数

这个就不能直接使用python的库,毕竟浮点数有小数点的,小数点也算是一种符号,单纯使用str.isdigit()    所有字符都是数字 来判断是不行的;

不妨使用字符串分割(切片)函数,把浮点数分为小数点左边部分、小数点右边部分,再分别检测各部分是否为全数字

代码实现:

# 输入参数 str 需要判断的字符串
# 返回值   True:该字符串为浮点数;False:该字符串不是浮点数。
def IsFloatNum(str):
    s=str.split('.')
    if len(s)>2:
        return False
    else:
        for si in s:
            if not si.isdigit():
                return False
        return True

判断字符串是否为字母

这个直接调用python的库就可以了哈,假设str为字符串

str.isalpha()  判断所有字符都是字母 

返回值 True:所有字符都是字母;False:所有字符不都是字母。

str.islower()  判断所有字符都是小写 

str.isupper() 判断所有字符都是大写

str.istitle()    判断所有单词都是首字母大写

判断字符串是否为空

str.isspace() 判断所有字符都是空白字符、\t、\n、\r

小结

str.isdigit()    判断所有字符都是数字(整形)   

str.isalnum() 判断所有字符都是数字或者字母    

str.isalpha()  判断所有字符都是字母 

str.islower()  判断所有字符都是小写 

str.isupper() 判断所有字符都是大写

str.istitle()    判断所有单词都是首字母大写

方法补充

在Python中,判断字符串的具体类型(数字、浮点数、字母等)有多种方法,适用场景不同。下面系统介绍几种常见需求及其最佳实现。

判断字符串是否为纯数字(非负整数)

方法:使用字符串的 isdigit() 方法。

s = "12345"
print(s.isdigit())   # True
s = "12.3"
print(s.isdigit())   # False (包含小数点)
s = "-123"
print(s.isdigit())   # False (负号不是数字)
s = "0"
print(s.isdigit())   # True
  • 只匹配 0-9 字符,不匹配负数、小数或其它数字形式(如中文数字)。
  • 空字符串返回 False

判断字符串是否为整数(可带正负号)

使用 int() 转换并捕获异常,可处理正负整数和零。

def is_integer(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

print(is_integer("123"))     # True
print(is_integer("-456"))    # True
print(is_integer("+7"))      # True
print(is_integer("12.3"))    # False
print(is_integer("12a"))     # False
print(is_integer(""))        # False
  • 适用于任何有效的整数表示,包括前导正负号。
  • 不支持科学计数法(如 1e3 会被视为浮点数,但 int("1e3") 会报错)。

判断字符串是否为浮点数(可带正负号、小数点、科学计数法)

使用 float() 转换并捕获异常。

def is_float(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

print(is_float("3.14"))      # True
print(is_float("-0.001"))    # True
print(is_float("2e-5"))      # True
print(is_float("inf"))       # True (无穷大)
print(is_float("NaN"))       # True (非数字)
print(is_float("123"))       # True (整数也是有效的浮点数)
print(is_float("12a"))       # False
  • 会识别 inf-infNaN 等特殊浮点值(根据需求可额外过滤)。
  • 整数也会被判定为 True,若需严格区分小数,可额外检查是否包含小数点或科学计数法。

判断字符串是否为纯字母(只含字母,无空格或数字)

使用字符串的 isalpha() 方法。

s = "Hello"
print(s.isalpha())   # True

s = "Hello123"
print(s.isalpha())   # False (包含数字)

s = "你好"
print(s.isalpha())   # True (中文字符也被视为字母)

s = " "
print(s.isalpha())   # False
  • 对于非ASCII字母(如中文、希腊字母)也返回 True
  • 如需仅限英文字母,可使用正则 [A-Za-z]

判断字符串是否为字母或数字组合(无其他字符)

使用字符串的 isalnum() 方法。

print("abc123".isalnum())   # True
print("123".isalnum())      # True
print("abc".isalnum())      # True
print("abc 123".isalnum())  # False (含空格)
print("abc_123".isalnum())  # False (含下划线)
  • 等价于 isalpha() or isdigit(),但一次调用更高效。
  • 同样支持中文等非ASCII字符。

使用正则表达式精确控制

当需要更复杂的规则(例如:允许前导负号、小数点后必须有数字、不能是科学计数法等)时,可以使用正则。

import re
def is_positive_integer(s):
    """只允许纯数字字符串,无前导零(可选)"""
    return bool(re.fullmatch(r'[1-9][0-9]*|0', s))
def is_decimal_float(s):
    """严格判断浮点数:必须有小数点,且小数点前后至少有一位数字"""
    return bool(re.fullmatch(r'-?\d+\.\d+', s))
def is_english_letters(s):
    """仅限英文字母(大小写)"""
    return bool(re.fullmatch(r'[A-Za-z]+', s))

使用 re.fullmatch 确保整个字符串完全匹配,避免部分匹配。

综合判断示例:识别数字、浮点数、字母

def classify_string(s):
    if not s:
        return "空字符串"
    if s.isdigit():
        return "非负整数"
    if s.isalpha():
        return "字母字符串(含多语言)"
    try:
        int(s)
        return "整数(可带符号)"
    except ValueError:
        pass
    try:
        float(s)
        return "浮点数(含科学计数法)"
    except ValueError:
        pass
    if s.isalnum():
        return "字母数字混合"
    return "其他类型"
# 测试
print(classify_string("123"))       # 非负整数
print(classify_string("-456"))      # 整数(可带符号)
print(classify_string("3.14"))      # 浮点数(含科学计数法)
print(classify_string("abc"))       # 字母字符串(含多语言)
print(classify_string("abc123"))    # 字母数字混合
print(classify_string(" "))         # 其他类型

注意事项

  • 空字符串:上述 isdigit()isalpha()isalnum() 对空字符串均返回 Falseint()/float() 转换会抛出异常,需额外处理。
  • 正负号与空格isdigit() 不识别符号;int() 和 float() 可以识别前导正负号,但会忽略前后空格。
  • 科学计数法float() 可识别,但 isdigit() 不能,可根据业务决定是否接受。
  • Unicode数字isdigit() 可以识别其他语言的数字(如 "一二三"),如需仅限ASCII数字,可用 s.isdigit() and s.isascii()(Python 3.7+)。

到此这篇关于Python判断字符串是否为数字,浮点数或者字母的文章就介绍到这了,更多相关Python判断字符串类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 安装Python的教程-Windows

    安装Python的教程-Windows

    下面小编就为大家带来一篇安装Python的教程-Windows。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • AI与Python计算机视觉教程

    AI与Python计算机视觉教程

    这篇文章主要为大家介绍了AI与Python计算机视觉教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • NumPy 迭代数组的几种方法

    NumPy 迭代数组的几种方法

    在 NumPy 中,迭代数组意味着遍历数组中的每个元素,并对其进行操作,NumPy 提供了多种迭代数组的方法,下面就来详细的介绍一下,感兴趣的可以了解一下
    2025-10-10
  • Pycharm2017版本设置启动时默认自动打开项目的方法

    Pycharm2017版本设置启动时默认自动打开项目的方法

    今天小编就为大家分享一篇Pycharm2017版本设置启动时默认自动打开项目的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 使用Atom支持基于Jupyter的Python开教程详解

    使用Atom支持基于Jupyter的Python开教程详解

    这篇文章主要介绍了使用Atom支持基于Jupyter的Python开发,Vscode虽然说也有连接Jupyter的工具,但是交互式的开发Hydrogen体验更好,需要的朋友可以参考下
    2021-08-08
  • 对python中各个response的使用说明

    对python中各个response的使用说明

    今天小编就为大家分享一篇对python中各个response的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python 稀疏矩阵-sparse 存储和转换

    Python 稀疏矩阵-sparse 存储和转换

    这篇文章主要介绍了Python 稀疏矩阵-sparse 存储和转换的相关资料,需要的朋友可以参考下
    2017-05-05
  • Jupyter Notebook打开任意文件夹操作

    Jupyter Notebook打开任意文件夹操作

    这篇文章主要介绍了Jupyter Notebook打开任意文件夹操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python爬虫XPath解析出乱码的问题及解决

    Python爬虫XPath解析出乱码的问题及解决

    这篇文章主要介绍了Python爬虫XPath解析出乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Python网站验证码识别

    Python网站验证码识别

    这篇文章主要介绍了Python网站验证码识别的相关资料,需要的朋友可以参考下
    2016-01-01

最新评论