字符串5:数据判断

本文介绍了Python中用于字符串数据判断的12个函数,包括startswith()、endswith()、isupper()、islower()等,详细阐述了每个函数的用法和判断条件,帮助理解字符串的不同属性检查。

目录

1. startswith(prefix[,start[,end]])

2. endswith(suffix[,start[,end]])

3. isupper()

4. islower()

5. istitle()

6. isaplha()

7. isascii()

8. isspace()

9. isprintable()

10. isdecimal()、isdigit()、isnumeric()

11. isalnum()

12. isidentifier()


1. startswith(prefix[,start[,end]])

如果存在 prefix 参数指定的前缀子字符串,则返回 True,否则返回 False;

可选参数 start 和 end 用于指定起始和结束位置;

prefix 参数允许以元组的形式提供多个子字符串;

查询字符串和前缀子字符串都可以为空,前缀子字符串为空,则必然返回True。

x = 'abcdef'

#前缀子字符串可以为单个字符或一段字符串
x.startswith('abc')
True
x.startswith('a')
True
x.startswith('b')
False

#可选参数 start 和 end 用于指定起始和结束位置
x.startswith('b',1)
True
x.startswith('bcd',1,2)
False
x.startswith('a',1)
False

#prefix 参数允许以元组的形式提供多个子字符串
x.startswith(('a','b','c'))
True
x.startswith(('a','b','c'),2)
True
x.startswith(('a','b','c'),3)
False

#查询字符串和前缀子字符串都可以为空,前缀子字符串为空,则必然返回True
x = 'abcdef'
x.startswith('')
True
x= ''
x.startswith('')
True

2. endswith(suffix[,start[,end]])

如果字符串是以 suffix 指定的子字符串为结尾,那么返回 True,否则返回 False;

可选参数 start 和 end 用于指定起始和结束位置;

suffix 参数允许以元组的形式提供多个子字符串;

查询字符串和后缀子字符串都可以为空,后缀子字符串为空,则必然返回True。

x = 'abcdeffedcba'

#后缀子字符串可以为单个字符或一段字符串,一段子字符串排列顺序还是从左至右
x.endswith('a')
True
x.endswith('ab')
False
x.endswith('ba')
True

#可选参数 start 和 end 用于指定起始和结束位置
x.endswith('abc',0,3)
True
x.endswith('abc',0,4)
False
x.endswith('cba',9)
True
x.endswith('cba',10)
False
x.endswith('cba',8,11)
False

#suffix 参数允许以元组的形式提供多个子字符串
x.endswith(('a','b','c'),0,12)
True
x.endswith(('a','b','c'),0,10)
True
x.endswith(('a','b','c'),0,9)
False

#查询字符串和后缀子字符串都可以为空,后缀子字符串为空,则必然返回True
x = 'abcdeffedcba'
x.endswith('')
True
x = ''
x.endswith('')
True

3. isupper()

如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都是大写,则返回 True,否则返回 False

#包含一个大写字母,且没有小写字母则返回True,可以另外包含空格、数字和其他标点符号等
x = 'A1$ ,'
x.islower()
True

#包含一个小写字母则返回False
x = 'A1$ ,a'
x.islower()
False

#字符串为空,返回False
x =''
x.isupper()
False

4. islower()

如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都是小写,则返回 True,否则返回 False

#包含一个小写字母,且没有大写字母则返回True,可以另外包含空格、数字和其他标点符号等
x = 'a1$ ,'
x.islower()
True

#包含一个大写字母则返回False
x = 'a1$ ,A'
x.islower()
False

#字符串为空,返回False
x =''
x.islower()
False

5. istitle()

如果字符串是标题化字符串则返回 True,否则返回 False;

标题化字符串,即所有的单词(连续的字母字符串)都是以大写开始,其余字母均小写;

单词前后可以用空格、数字和其他标点符号断开

#字符串为空,返回False
x =''
x.istitle()
False

#除首字母外,其他字母大写报错
x = 'AAbc'
x.istitle()
False

#以空格、数字、标点符号、转义字符等为间隔,后续首字母都需要为大写
x = 'Abc e'
x.istitle()
False
x = 'Abc1e'
x.istitle()
False
x = 'Abc$e'
x.istitle()
False
x = 'Abc,e'
x.istitle()
False
x = 'Abc\te'
x.istitle()
False
x = 'Ab Cd1Ef$Gh,Ij\tKl'
x.istitle()
True

6. isaplha()

如果字符串中至少有一个字符并且所有字符都是字母则返回 True,否则返回 False;

这里的字母是 Unicode 编码中定义的字母,不止是 26 个英文字母,支持中文、英文、希腊文、俄文、拼音等各类型文字字母。

#字符串支持中文、英文、希腊文、俄文、拼音大小写等Unicode编码定义的字母,返回True
x = 'aBЛчÀěΓβ'
x.isalpha()
True
x = '中文'
x.isalpha()
True

#字符串为空,返回False
x =''
x.isalpha()
False

#字符串包含空格、数字、标点符号、转义字符等时,返回False
x = 'ab '
x.isalpha()
False
x = 'ab1'
x.isalpha()
False
x = 'ab,'
x.isalpha()
False
x = 'ab\t'
x.isalpha()
False

7. isascii()

如果字符串中所有字符都是 ASCII 则返回 True,否则返回 False;ASCII 字符编码范围是 U+0000 ~ U+007F,空字符串也是 ASCII

#所有字符都是ASCII则返回True,包括常见英文字母、数字、标点符号、转义字符,和空字符串等
x = 'aA1#/ *'
x.isascii()
True
x = 'aA1#/*\t'
x.isascii()
True
x =''
x.isascii()
True

#希腊文、俄文、拼音字母不属于ASCII码,则返回False
x = 'aA1#/*Л'
x.isascii()
False
x = 'aA1#/*ě'
x.isascii()
False
x = 'aA1#/*β'
x.isascii()
False

8. isspace()

如果字符串中至少有一个字符并且所有字符都是空格,则返回 True,否则返回 False;

出空格字符外,转义字符中的换行符'\n'、水平制表符'\t'、垂直制表符'\v'、回车符'\r'、换页符'\f'也被认可为空格。

#字符串中只包括空格和部分转移字符,则返回True
x = '  '
x.isspace()
True
x = '\n\t\v\r\f'
x.isspace()
True

#字符串中包含其他字母、数字、标点等内容时,返回False
x = '  a'
x.isspace()
False
x = '  ,'
x.isspace()
False
x = '  1'
x.isspace()
False

#字符串为空,返回False
x =''
x.isspace()
False

9. isprintable()

如果字符串是可以打印的内容则返回 True,否则返回 False;

绝大多数可输入内容,如字母、数字、标点符号、空格、空字符串等都为可打印内容,返回True;

转义字符不可直接打印,返回False。

#字母、数字、标点符号、空格、空字符串都为可打印的内容,返回True
x = 'aBЛчÀěΓβ1@ '
x.isprintable()
True
x =''
x.isprintable()
True

#转义字符不可直接打印,返回False
x = '\n'
x.isprintable()
False
x = '\t'
x.isprintable()
False

10. isdecimal()、isdigit()、isnumeric()

三个方法都是检测字符串至少有一个字符并且所有字符是否都是数字,但有所区别。

isdecimal()检测字符串中只能包含十进制数字'012345678',如果为空或有其他字符则返回False;

isdigit()检测字符串除支持isdecimal()支持内容外,还支持'2²'这样的数字形式;

isnueric()检测字符串除支持isdigit()支持内容外,还支持'Ⅰ二仨④'等罗马数字、简体数字、繁体数字、数字符号等内容。

#字符串中至少有一个字符并且所有字符都是十进制数字则返回 True
x = '0123456789'
x.isdecimal()
True
x.isdigit()
True
x.isnumeric()
True

#字符串中包含标点符号、空格、字母等,则返回False
x = '0123456789.'
x.isdecimal()
False
x.isnumeric()
False
x.isdigit()
False
x = '0123456789 '
x.isdecimal()
False
x.isnumeric()
False
x.isdigit()
False
x = '0123456789a'
x.isdecimal()
False
x.isnumeric()
False
x.isdigit()
False

#字符串为空,返回False
x =''
x.isdecimal()
False
x.isnumeric()
False
x.isdigit()
False

#字符串包含平方数字,isdecimal返回False,isdigit、isnumeric返回True
x = '2²'
x.isdecimal()
False
x.isdigit()
True
x.isnumeric()
True

#字符串包含罗马数字、简体数字、繁体数字、数字符号,isdecimal、isdigit返回False,isnumeric返回True
x = 'ⅠⅡⅢⅣⅤ'
x.isdecimal()
False
x.isdigit()
False
x.isnumeric()
True
x = '一二三四五'
x.isdecimal()
False
x.isdigit()
False
x.isnumeric()
True
x = '壹贰仨肆伍'
x.isdecimal()
False
x.isdigit()
False
x.isnumeric()
True
x = '①②③④⑤'
x.isdecimal()
False
x.isdigit()
False
x.isnumeric()
True

11. isalnum()

如果字符串中至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False;

 isalpha()、isdecimal()、isdigit()、isnumeric()任一判断为True,则isalnum()判断为True。

#isalpha()、isdecimal()、isdigit()、isnumeric()任一判断为True的字母或数字,返回True
x = 'aBЛчÀěΓβ一Ⅱ③肆5'
x.isalnum()
True

#字符串包含空格、标点符号、转义字符,返回False
x = 'aBЛчÀěΓβ一Ⅱ③肆5 '
x.isalnum()
False
x = 'aBЛчÀěΓβ一Ⅱ③肆5,'
x.isalnum()
False
x = 'aBЛчÀěΓβ一Ⅱ③肆5\t'
x.isalnum()
False

#字符串为空,返回False
x =''
x.isalnum()
False

12. isidentifier()

如果字符串是一个合法的 Python 标识符则返回 True,否则返回 False;

具体判断方法,参见变量名要求:2.变量名要求: 

需要注意,即使isidentifier()判断为True,标识符也可能不能作为变量名,此时字符串可能是一个保留标识符,可以通过调用 keyword.iskeyword(s) 可以检测字符串是否一个保留标识符(比如 "if" 或 "for")。

#字母、下划线、数字组成,可以使用中文字符
x = 'abcde_123_中文'
x.isidentifier()
True

#不能包含空格、标点符号、转义字符,否则返回False
x = 'abcde_123_中文 '
x.isidentifier()
False
x = 'abcde_123_中文,'
x.isidentifier()
False
x = 'abcde_123_中文\t'
x.isidentifier()
False

#数字在前,返回False
x = '123_abcd'
x.isidentifier()
False

#字符串为空,返回False
x =''
x.isidentifier()
False

#keyword判定
import keyword
keyword.iskeyword('if')
True
keyword.iskeyword('abc')
False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的火鸟啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值