Python字符串处理方法总结

  • 发布时间:2016年2月5日 10:41
  • 作者:杨仕航
  • 分类标签: Python
  • 阅读(10518)
  • 评论(0)

一、前言

字符串处理是每一门编程语言的基本功。我总结了一下字符串常用的处理方法。

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字符串处理大致总结这么写内容。若有什么建议或者其他可以补充的东西,欢迎大家评论回复一下。

上一篇:Excel vba 网抓天气预报

下一篇:Excel vba 网抓百度搜索结果

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空