字符串方法(三)
本文作者:李钊颖
文字编辑:宁刘莹
技术总编:张 邯
重磅!!!爬虫俱乐部将于2019年10月2日至10月5日在湖北武汉举行Python编程技术培训,本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python编程技术,尤其是爬虫技术和文本分析技术。该培训目前在火热招生中,点击《爬虫俱乐部2019十一Python编程技术培训报名啦!》或点击文末阅读原文,了解培训详细信息,抓紧时间报名吧!
在之前两篇推文《字符串方法介绍》以及《字符串方法(二)》中,我们已经介绍了Python中字符串对象的查找、替换、填充、删除等方法,本文将继续介绍字符串的判断方法。
涉及判断就不得不提一下布尔型变量。布尔型变量是有两种逻辑状态的变量,它包含两个值:True(真)或者 False(假),它不是字符串,不需要用引号作为边界符。判断方法将返回的就是布尔型变量,当判断为真的时候返回True,判断为假的时候返回False。字符串对象的判断方法众多且繁杂,但语法结构相似,我们如下一一列举。
1. 判断字符串是否以指定的内容开始或结束
(1) 如果我们想判断字符串是否以指定的内容开始,可以用startswith()方法进行判断。startswith()方法的语法是:
str.startswith(prefix[,start[,end]])
In [1]: str1 = '''我国地域辽阔,花卉种类繁多,能够被全国人民普遍接受的,主要集中在牡丹、梅花、菊花、兰花、月季、茶花、 荷花等大众化花卉上。'''
In [1]: str1.startswith('我国')
Out[1]: True
该方法的“[,start[,end]]”选项表示可以从指定的位置区间进行判断,如下我们只对str1中的前两个字符进行判断,此处两个参数决定的区间范围依然遵循左闭右开的原则:
In [2]: str1.startswith('我国',0,1)
Out[2]: False
(2) 要想判断字符串是否以指定的部分结束,我们可以用endswith ()方法进行判断,与startswith相似,语法为:
str.endswith(suffix[,start[,end]])
In [51]: str1.endswith('。')
Out[51]: True
同样该方法可以增加位置选项,表示从指定的位置区间进行判断,如下:
In [52]: str1.endswith('。',0,5)
Out[52]: False
2.测试字符串str是否是数字、字母以及字母或数字
(1) 判断字符串是否只包含十进制的数字,可以使用isdecimal()方法:
In [57]: s='stata666'
In [58]: s.isdecimal()
Out[58]: False #字符串中不仅包含十进制的数字,还包括字母,判断结果为假
In [59]: s='666'
In [60]: s.isdecimal()
Out[60]: True #字符串中仅包含十进制的数字,判断结果为真。
(2) 判断至少有一个字符的字符串中是否只包含数字字符,可以使用isdigit()方法:
In [61]: s='stata①①①'
In [62]: s.isdigit()
Out[62]: False #字符串中不仅包含数字,还包括英文字母,判断结果为假
In [63]: s='①①①'
In [64]: s.isdigit()
Out[64]: True #字符串中仅包含数字,判断结果为真。
(3) 判断字符串是否只包含数字、汉字数字,可以使用isnumeric()方法:
In [1]: s='666'
In [2]: s.isnumeric()
Out[2]: True #字符串中只包含数字,判断结果为真。
In [3]: s='六六六'
In [4]: s.isnumeric()
Out[4]: True #字符串中只包含汉字数字,判断结果为真。
In [5]: s='六六六666'
In [6]: s.isnumeric()
Out[6]: True #字符串中包含数字和汉字数字,判断结果为真。
对于非Unicode字符串,以上这3个方法是等价的。那它们有什么不同点呢?下表总结了三者之间的不同点:
(4) 若想判断字符串中是否只包含字母,可采用isalpha()方法:
In [55]: s='stata'
In [56]: s.isalpha()
Out[56]: True #字符串中只包含字母,判断结果为真。
(5) 若想判断字符串是否只包含字母或数字,可以采用isalnum()方法:
In [53]: s='stata666'
In [54]: s.isalnum()
Out[54]: True #字符串中包含字母和数字,判断结果为真。
3. 判断字符串是否小写、大写、首字母大写。这些方法要求str中至少要包含一个字符串字符,否则直接返回False,例如不能是纯数字。
(1) 判断所有的字母是否全为小写字母,可以使用islower()方法:
In [8]: s='Stata Club'
In [9]: s.islower()
Out[9]: False #字符串中包含大写字母,判断结果为假。
In [10]: s='stata club'
In [11]: s.islower()
Out[11]: True #字符串中仅包含小写字母,判断结果为真。
(2) 判断字符串是否全部都是可打印字符或空字符,可以使用isprintable()方法:
In [1]: s='stata club'
In [2]: s.isprintable()
Out[2]: True #字符串全部是可打印字符,判断结果为真。
In [3]: s='stata\tclub'
In [4]: s.isprintable()
Out[4]: False #字符串中含有水平制表符\t,判断结果为假。
In [5]: s='stata\nclub'
In [6]: s.isprintable()
Out[6]: False #字符串中含有换行符\n,判断结果为假。
(3) 判断字符串中是否全部都是空白字符,可以使用isspace()方法:
In [7]: s=' '
In [8]: s.isspace()
Out[8]: True #字符串s中只含有空白字符,判断结果为真。
In [9]: s='stata club'
In [10]: s.isspace()
Out[10]: False #字符串s中不仅含有空白字符,还有英文字母,判断结果为假。
(4) 判断字符串中的单词是否为首字母大写的格式,可以使用istitle()方法:
In [11]: s='Stata Club'
In [12]: s.istitle()
Out[12]: True #字符串s中的单词格式为首字母大写,判断结果为真。
In [13]: s='StataClub'
In [14]: s.istitle()
Out[14]: False #字符串s中的单词不止首字母大写,判断结果为假。
(5) 判断所有字母是否都为大写,可以使用isupper()方法:
In [1]: s='STATACLUB'
In [2]: s.isupper()
Out[2]: True #字符串s中所有字母都为大写,判断结果为真。
In [3]: s='STATACLUB爬虫'
In [4]: s.isupper()
Out[4]: True #字符串s中除汉字外所有字母都为大写,判断结果为真。
In [5]: s='StataClub'
In [6]: s.isupper()
Out[6]: False #字符串s中的字母既有大写也有小写,判断结果为假。
字符串方法的介绍到这里就完结了,字符串的方法众多且繁杂,我们没有必要全部记忆,读者们只需记忆常用方法,然后收藏这系列推文,用时进行查阅即可。
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。