python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python判断字符串类型

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

作者:躬行见万象

在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

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

使用 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

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

使用 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

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

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

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

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

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

s = " "
print(s.isalpha())   # False

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

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

print("abc123".isalnum())   # True
print("123".isalnum())      # True
print("abc".isalnum())      # True
print("abc 123".isalnum())  # False (含空格)
print("abc_123".isalnum())  # False (含下划线)

使用正则表达式精确控制

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

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(" "))         # 其他类型

注意事项

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

您可能感兴趣的文章:
阅读全文