关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
一、前言
字符串处理是每一门编程语言的基本功。我总结了一下字符串常用的处理方法。
python由于早期专门编写了一个string模块,后面又整合到字符串对象中。所以python字符串处理有两种:一种是直接处理,一种是导入string模块处理。为了向后兼容,python一直保留着string模块。
为了方便,先声明一下。
以下已经用 import string 导入string模块;
用变量str代表字符串变量或字符串;
三个>代表在控制台输入。
我整理了一个目录,可以直接点击跳转。
二、字符串截取
这个字符串截取在python相当方便,因为python有切片器这个神奇的东西,而且字符串实际是一个字符数组。注意切片器是从0开始的,需要两个参数指定起始位置(类似于C#或Java的substring方法),其中len函数是获取字符串的长度。
1、左截取3个字符:str[:3]
2、右截取3个字符:str[len(str)-3:]
3、从中间第2个字符开始截取3个字符:str[1:4]
三、字符串格式化
这个字符串格式化也是相当重要的一个功能。python中用%s和元组来搭配使用。例如:
>>>"你好,我是%s。来自%s" % ('杨仕航','地球')
可以得到输出'你好,我是杨仕航。来自地球'
当然,还有其他格式化符号,这个比较简单。大家可以百度搜索一下。我一般会偷懒直接用%s万能代替。
四、字符串填充
其实字符串填充是把不足位数的用指定字符填充进去。严格来说,也可以归入到格式化里面。为了系统化,我还是单独把这一部分独立出来。
这个有4个方法:center、ljust、rjust、zfill,使用如下
>>>"abc".center(5,'-') #用-填充,中间填充
'-abc-'
>>>"abc".ljust(5,'-') #用-填充,左边填充
'abc--'
>>>"abc".rjust(5,'-') #用-填充,右边填充
'--abc'
>>>"abc".zfill(5) #0值填充,右边填充
'00abc'
五、字母大小写转换
字母大小写转换个人用得比较少,因为平常很少处理英文相关东西。这部分一共有5个方法。
1、str.lower() #把字母转成小写
2、str.upper() #把字母转成大写
3、str.swapcase() #大小写互换
4、str.capitalize() #句子首字母大写
5、str.title() #每个单词首字母大写
最后这个titile方法,string模块也有一个方法对应 string.capwords(str)
六、字符串判断
有时候,判断字符串类型总是难免的。下面这些方法都是返回布尔值。
1、str.isalpha() #是否全是字母,并至少有一个字符
2、str.isdigit() #是否全是数字,并至少有一个字符
3、str.isspace() #是否全是空白字符,并至少有一个字符
4、str.islower() #字母是否全是小写
5、str.isupper() #字母是否便是大写
6、str.istitle() #是否是首字母大写的
7、str.startwith(prefix[,start[,end]]) #是否以prefix开头
8、str.endwith(suffix[,start[,end]]) #以suffix结尾
但更多是时候只是判断某个字符串是否包含某个字符。这个可以用in方法判断,例如判断'123'是否包含'3'
>>>'3' in '123'
True
也就是说,我们可以用一串字符串去判断,例如数字我就写'0123456789'。
当然,这些不需要我们傻傻地一个一个去写。string模块已经提供好一些常量了。看下一个部分内容。
七、string模块常量
string.digits #数字0~9
string.letters #所有字母(大小写)
string.lowercase #所有小写字母
string.printable #可打印字符的字符串
string.punctuation #所有标点
string.uppercase #所有大写字母
这些大家可以在控制台直接输出看看是什么东西。
八、字符串查找
只是判断是否包含某些字符串还不够,有时候还需要知道具体位置。这个就涉及到字符串查找了。
1、str.find(substr, [start, [end]])
返回str中出现substr的第一个字母的标号,如果str中没有substr则返回-1。start和end作用就相当于在str[start:end]中搜索。
2、str.rfind(substr, [start, [end]])
返回str中最后出现的substr的第一个字母的标号,如果str中没有substr则返回-1,也就是说从右边算起的第一次出现的。
3、str.index(substr, [start, [end]])
与find()相同,只是在str中没有substr时,会返回一个运行时错误
4、str.rindex(substr, [start, [end]])
与rfind()相同,只是在str中没有substr时,会返回一个运行时错误
5、str.count(substr, [start, [end]]) #计算substr在str中出现的次数
九、字符串替换
1、str.replace(oldstr, newstr, [count])
把str中的oldstar替换为newstr,count为替换次数。
2、str.strip([chars])
把str中左右两边包含chars中有的字符全部去掉,可以理解为把str左右两边出现的chars替换为None
3、str.lstrip([chars])
把str中左边包含chars中有的字符全部去掉,可以理解为把str左边出现的chars替换为None
4、str.rstrip([chars])
把str中右边包含chars中有的字符全部去掉,可以理解为把str右边出现的chars替换为None
5、str.expandtabs([tabsize])
把str中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个
十、字符串分割和组合
这个我用得比较多,也是字符串处理除了正则表达式之外使用比较灵活的东西。
1、str.split([sep, [maxsplit]])
以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符。例如:
>>>'123-34-45436'.split('-')
['123', '34', '45436']
2、str.rsplit([sep, [maxsplit]])
这个和str.splitlines([keepends]) 效果一样,都是把str按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。例如:
>>>'123\r234\n345'.rsplit()
['123', '234', '345']
3、str.join(seq)
把seq代表的序列──字符串序列,用str连接起来。例如:
>>>''.join(['df', '234', 'd4'])
'df234d4'
>>>'-'.join(['df', '234', 'd4'])
'df-234-d4'
十一、字符串转数字
string模块还包含相关字符串转数字的方法。如下
>>>string.atoi("123",10) #转成十进制
123
>>>string.atoi("A",16) #转成十六进制
10
>>>string.atof("123") #转成浮点型数字
123.0
python字符串处理大致总结这么写内容。若有什么建议或者其他可以补充的东西,欢迎大家评论回复一下。