前言
承接之前内容,这一部分介绍Python中的字符串处理函数,与介绍R语言中字符串处理函数类似,按照Python内置的字符串处理函数和Python中的正则表达式re模块。
5 字符串函数--基于Python
5.1 Python内置的字符串处理函数
这里将Python内置的字符串处理函数归为以下几类:去字符函数、填充函数、字母转换函数、搜索函数、替换函数、分割和连接函数以及判断函数等。
5.1.1 去字符函数
去字符函数主要用于去除字符串首尾两端的空格、换行符、制表符以及制定的字符,函数有strip()、lstrip()以及rstrip()。
- strip()函数:去除字符串两边空格、换行符以及制表符以及两端指定的字符
- lstrip()函数:去除字符串左边空格、换行符以及制表符以及开头指定的字符
- rstrip()函数:去除字符串右边空格、换行符以及制表符以及结尾指定的字符
1 删除两端的空格、换行符以及制表符
text = ' Flash WorkingNotes ntn'
##删除两端的空格、换行符以及制表符等
text.strip()
2 删除左边的空格、换行符以及制表符
text = ' Flash WorkingNotes ntn'
##删除左边的空格、换行符以及制表符等
text.lstrip()
3 删除右边的空格、换行符以及制表符
text = ' Flash WorkingNotes ntn'
##删除右边的空格、换行符以及制表符等
text.rstrip()
4 删除两端字符F
text1 = 'Flash WorkingnotesF'
##删除两端的字符F
text1.strip('F')
5.1.2 填充函数
填充函数用于获取固定长度的字符串,函数有ljust()、rjust()、center()以及zfill()函数。
- ljust(width)函数:获取固定长度的字符串,左对齐,右边不够用空格补齐
- rjust(width)函数:获取固定长度的字符串,右对齐,左边不够用空格补齐
- center(width)函数:获取固定长度的字符串,中间对齐,两边不够用空格补齐
- zfill(width)函数:获取固定长度的字符串,右对齐,左边不足用0补齐
1 限定字符串长度为30,左对齐,长度不够右边用空格补充
text2 = 'Flash WorkingNotes'
text2.ljust(30)
2 限定字符串长度为30,右对齐,长度不够右左边用空格补充
text2 = 'Flash WorkingNotes'
text2.rjust(30)
3 限定字符串长度为30,中间对齐,两边不够用空格补齐
text2 = 'Flash WorkingNotes'
text2.center(30)
4 限定字符串长度为30,右对齐,左边不足用0补齐
text2 = 'Flash WorkingNotes'
text2.zfill(30)
5.1.3 字母转换函数
字母转换函数主要用于字符串的大小写之间的转换,有upper()、lower()、swapcase()、capitalize()以及title()函数。
- upper()函数:将字符串全部换成大写
- lower()函数:将字符串全部换成小写
- swapcase() 函数:将字符串大小写互换
- capitalize() 函数:将字符串首字母大写,其余小写
- title()函数:字符串转换成首字母大写
1 将字符串字母全部转换成大写字母
text3 = 'fLash workingNotes'
text3.upper()
2 将字符串字母全部转换成小写字母
text3 = 'fLash workingNotes'
text3.lower()
3 字符串转换成首字母大写
text3 = 'fLash workingNotes'
text3.title()
4 将字符串首字母大写,其余小写
text3 = 'fLash workingNotes'
text3.capitalize()
5 将字符串大小写互换
text3 = 'fLash workingNotes'
text3.swapcase()
5.1.4 搜索函数
搜索函数用于搜索字符串中是否包含指定的字符以及指定字符出现的次数,有find()、rfind()、index()以及count()函数
- find()函数:搜索字符串中是否包含指定的字符,包含返回索引位置,不包含返回-1,可以使用参数start以及end指定起始以及结束位置搜索
- rfind()函数:从左边开始搜索字符串中是否包含指定的字符,包含返回索引位置,不包含返回-1,可以使用参数start以及end指定起始以及结束位置搜索
- index()函数:搜索字符串中是否包含指定的字符,包含返回索引位置,不包含报错,可以使用参数start以及end指定起始以及结束位置搜索
- count()函数:统计指定的字符串出现的次数,可以使用参数start以及end指定起始以及结束位置搜索
1 搜索字符串中是否包含"o"字符
text4 = 'Flash Workingnotes'
text4.find('o')
字符串text4中包含两个o,位置索引分别为7和14,返回最先出现的索引位置7。
2 搜索字符串中是否包含"o"字符,限制从第10个字符开始搜索
text4 = 'Flash Workingnotes'
##从第10个字符开始搜索
text4.find('o',9)
字符串text4中包含两个o,位置索引分别为7和14,限定了从第10位置开始搜索,所以返回位置索引14。需要注意,限制起始以及结束搜索的位置,若搜索到指定字符,返回的还是在原字符串中的索引位置。
3 搜索字符串中是否包含"o"字符,搜索位置为1-9
text4 = 'Flash Workingnotes'
text4.find('o',1,9)
4 搜索字符串中是否包含"A"字符
text4 = 'Flash Workingnotes'
text4.find('A')
搜索字符'A',没有搜索到,返回-1。上述find()函数可以使用index()函数替换,区别在于当字符串中不包含指定的字符,结果报错:
text4 = 'Flash Workingnotes'
text4.index('A')
5 从左边开始搜索字符串中是否包含"o"
text4 = 'Flash Workingnotes'
text4.rfind('o')
字符串text4中包含两个o,位置索引分别为7和14,因为是从左边开始搜索,所以返回位置索引14
6 搜索字符串中包含字符"o"的次数
text4 = 'Flash Workingnotes'
text.count('o')
5.1.5 替换函数
替换函数用于替换字符串中的字符,用replace()函数
replace('old', 'new', times):将字符串中的old的字符替换成new的字符,times限制替换的次数,默认情况下,全部替换。
1 将字符串中的"o"替换成"A"
text5 = 'Flash Workingnotes'
text5.replace('o', 'A') ##等价于text5.replace('o', 'A', text5.count('o'))
2 将字符串中的"o"替换成"A",只替换一次
text5 = 'Flash Workingnotes'
##只替换首次出现的字符
text5.replace('o', 'A', 1)
5.1.6 分割和连接函数
分割和连接函数用于分割字符串以及组合字符串,有split()、splitlines()以及join()函数。
- split('分割符', maxsplit)函数:使用指定的分隔符分割字符串,默认使用空格分割,参数maxsplit限制最大分割的次数,默认全部分割
- splitlines()函数:使用换行符分割字符串,参数keepends为True的时候,结果保留换行符
- join()函数:用于组合字符串
1 使用空格分割字符串
text6 = 'Flash Workingnotes-Flash-Workingnotes'
text6.split()
2 使用"-"分割字符串
text6 = 'Flash Workingnotes-Flash-Workingnotes'
##使用分隔符"-"分割
text6.split('-')
3 使用"-"分割字符串,只分割一次
text6 = 'Flash Workingnotes-Flash-Workingnotes'
##使用分隔符"-"分割,并限制最大分割次数为1
text6.split('-',1)
4 使用换行符分割字符串
text6 = 'FlashnWorkingnotesngaomingyu'
text6.splitlines()
5 使用换行符分割字符串,并保留换行符
text6 = 'FlashnWorkingnotesngaomingyu'
text6.splitlines(True)
6 使用"-"组合字符串
text6 = ['Flash', 'Workingnotes']
'-'.join(text6)
7 使用空格组合字符串
text6 = ['Flash', 'Workingnotes']
' '.join(text6)
5.1.7 判断函数
字符串判断函数主要用于判断字符串是否符合某种"模式",有startswith()、endwith()、isalnum()、isalpha()、isdigit()、islower()、isupper()、istitle()以及isspace()函数。
- startswith(,statr,end)函数:判断字符串是否以指定的字符开始
- endwith(,statr,end)函数:判断字符串是否以指定的字符结尾
- isalnum()函数:判断字符串是否全为字母或者数字
- isalpha()函数:判断字符串是否全为字母
- isdigit()函数:判断字符串是否全为数字
- islower()函数:判断字符串是否全为小写
- isupper()函数:判断字符串是否全为小写
- istitle()函数:判断字符串首字母是否为大写
- isspace()函数:判断字符串是否为空格
1 判断字符串是否以F开头
text7 = 'Flash Workingnotes'
text7.startswith('F')
2 判断字符串子集是否以F开头
text7 = 'Flash Workingnotes'
text7.startswith('F', 1,7)
3 判断字符串是否以s结尾
text7 = 'Flash Workingnotes'
text7.endswith('s')
4 判断字符串子集是否以s结尾
text7 = 'Flash Workingnotes'
text7.endswith('s',1,7)
5.1.8 总结
这一部分介绍了Python内置的字符串处理函数,下面接着介绍Python的re模块。
关于作者:某互金公司从事风控方面工作,数据科学爱好者,微信公众号WorkingNotes,致力于记录自己成长轨迹,分享实践经验,欢迎交流。