字符串


在Python中字符串本身有带很多操作,字符串的特性,不可以被修改

1、字符串的定义,Traceback 回溯 

1 2 3 4 5 6 7 8 9 10 11 12 #定义空字符串 name = '' #定义非空字符串 >>> name = "zhangqigao" #通过下标访问 >>> name[1] 'h' #不能修改字符串的值,否则会报错 >>> name[2= '3' Traceback (most recent call last):   File "", line 1in  TypeError: 'str' object does not support item assignment

注:字符串如果修改的话,字符串所在的内存地址也跟着变化,所以不可被修改,但是对于列表来说,可以修改是因为列表的内存是不变的,可以直接在上面修改

2、切片

字符串其实和列表,元组一样,也是可以切片的

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 >>> name = "qigao zhang" >>> name[1:4#取1到4之间的字符,包括1,不包括4 'iga' >>> name[1:-1#取1到-1之间的字符,包括1,不包括-1 'igao zhan' >>> name[0:3] 'qig' >>> name[:3#从头开始取,0可以省略,效果等同于name[0:3] 'qig' >>> name[3:] #想取到最后一个值,必须不能写-1,只能这么写 'ao zhang' >>> name[0::2#后面的2表示:每隔一个字符就取一个 'qgozag' >>> name[::2#从头开始0可以省略,效果跟上一句一样 'qgozag'

3、首字母大写(capitalize())

1 2 3 >>> name = "qigao zhang" >>> name.capitalize() 'Qigao zhang'

 4、统计(count(sub,start=None,end=None))

sub:统计的字符,start:开始位,end:结束位,start和end默认为空时,则表示全部字符中去统计

1 2 3 4 5 6 7 >>> name = "qigao zhangz" #有开始和结束符 >>> name.count("z",1,5) 0 #从整个字符串中统计字符 >>> name.count("z") 2

 5、center(width,fillchar)

如果width(字符宽度)小于等于(<=)字符串的长度,则返回原字符串,如果大于(>)字符串的,则用fillchar(填满字符)填满,处理结果等于width,字符串位于fillchar的中间

1 2 3 4 5 6 7 8 9 10 11 >>> name = "qigao zhangz" >>> len(name) 12 #10小于等于字符串宽度 >>> name.center(10,'-') 'qigao zhangz' #51大于字符串长度,并且字符串位于填充字符的中间 >>> name.center(51,'-') '--------------------qigao zhangz-------------------' >>> len(name.center(51,'-')) 51

6、ljust(width,fillchar)   fill填满

如果字符串的长度大于width(字符宽度),则返回原字符串,如果小于width,则用fillchar(填满字符)填满,处理结果等于width,fillchar位于字符串的最右边

1 2 3 4 5 6 7 8 9 10 11 >>> name = "qigao zhang" >>> len(name) 11 #小于等于字符串的长度 >>> name.ljust(11,'-') 'qigao zhang' #大于字符串的长度 >>> name.ljust(50,'-') 'qigao zhang---------------------------------------' >>> len(name.ljust(50,'-')) 50

 注:ljust中的l表示left的意思,表示从右向左

7.rjust(width,fillchar)

如果字符串的长度大于width(字符宽度),则返回原字符串,如果小于width,则用fillchar(填满字符)填满,处理结果等于width,fillchar位于字符串的最左边

1 2 3 4 5 6 7 8 9 >>> name = "qigao zhang" >>> len(name) 11 >>> name.rjust(11,'-') 'qigao zhang' >>> name.rjust(50,'-') '---------------------------------------qigao zhang' >>> len(name.rjust(50,'-')) 50

 注:ljust中的l表示left的意思,表示从左向右

8、编码(encode)

字符串的编码和解码,在这边不用说了,我专门写了一篇博客,详细地址:猛击这里

9、endwith(suffix,start=None,end=None)

判断是否已suffix结尾,是返回True,否返回Fales

suffix:表示字符,start:开始位,end:结束位,start和end默认为空是,表示从整个字符串的结尾去判断

1 2 3 4 5 6 7 >>> name = "qigao zhang" #start和end不为空 >>> name.endswith('g',1,5) False #默认为空 >>> name.endswith('g') True

 10、find(sub,start=None,end=None)

全文查找sub中第一个字符所在整个字符串中的索引值,没有找到则返回-1

sub:字符或者字符串,start:开始位,end:结束位,start和end默认为空时,则在整个字符串中查找

1 2 3 4 5 6 7 8 9 10 >>> name = "qigao zhang" #没找到,则返回-1 >>> name.find('zh',1,5) -1 >>> name.find('q',2) -1 >>> name.find('zh') 6 >>> name.find('zh',1,8) 6

11、rfind(sub,start=None,end=None)

左向右查找sub中第一个字符所在整个字符串中的索引值,没有找到则返回-1

1 2 3 4 5 6 7 >>> name = "qigao zhang" #找到 >>> name.rfind('q') 0 #未找到 >>> name.rfind('q',2) -1

12、format()  (format 格式)

这个函数就不用多少了,这个小主也专门写了一篇博客,更多用法,请:猛击这里

13、format_map()

数据格式,以字典形式传入

1 2 3 4 >>> name = "name:{name},age:{age}" >>> name.format_map({'name':'zhangqigao','age':23}) #输出结果 'name:zhangqigao,age:23'

14、isalnum()

是否是一个阿拉伯数字和字母,它包含因为英文字符+(1-9)数字,中间不能有特殊字符

1 2 3 4 5 6 7 8 9 10 11 12 13 >>> age = '23' >>> age.isalnum() True #有特殊字符的 >>> age = '2.3' >>> age.isalnum() False >>> age = 'ab23' >>> age.isalnum() True >>> age = 'ab' >>> age.isalnum() True

 15、isalpha()

是否是一个纯的英文字符,包含大写

1 2 3 4 5 6 7 8 9 10 11 >>> age = 'ab' >>> age.isalpha() True #夹着数字 >>> age = 'ab23' >>> age.isalpha() False #大写 >>> age = 'Ab' >>> age.isalpha() True

 16、isdigit() (digit数字)

判断是否是一个整数,详情请见:猛击这里

17、isspace()

判断是否是一个空格

1 2 3 4 5 6 7 8 #不是空格 >>> age = ' age' >>> age.isspace() False #是空格 >>> age = ' ' >>> age.isspace() True

 18、istitle()

 是否是一个标题(字符串中的每个单子首字母大写)

1 2 3 4 5 6 7 8 #每个单词的首字母是大写 >>> name = "Zhang Qi Gao" >>> name.istitle() True #每个单词的首字母是小写 >>> name = "zhang qi gao" >>> name.istitle() False

 19、isupper()  (upper 上面的)

是否是大写,注意字符串必须全部是大写才会返回True,否则返回False

1 2 3 4 5 6 7 8 #全部大写 >>> name="ZHANG" >>> name.isupper() True #小写 >>> name="Zhang" >>> name.isupper() False

 20、join()

序列用某个字符拼接成一个字符串,注意的是,序列的元素必须是str类型

1 2 3 >>> a = ['1','2','3'] >>> '+'.join(a) '1+2+3'

 21、lower()

字符串中的大写字母转换为小写字母

1 2 3 >>> name = "ZhangQiGao" >>> name.lower() 'zhangqigao'

 22、upper()

字符串中的小写字母转换为大写字母

1 2 3 >>> name = "ZhangQiGao" >>> name.upper() 'ZHANGQIGAO'

 23、strip()  (strip 脱光,剥去)

去掉左右两边的空格(space)和回车(\n)

1 2 3 >>> name = "   \n zhangqigao    \n" >>> name.strip() 'zhangqigao'

 24、lstrip()

删掉左边到右的空格(space)和回车(\n)

1 2 3 >>> name = "   \n zhangqigao    \n" >>> name.lstrip() 'zhangqigao    \n'

 25、rstrip()

删掉边到左边的空格(space)和回车(\n)

1 2 3 >>> name = "   \n zhangqigao    \n" >>> name.rstrip() '   \n zhangqigao'

至此,方法前有l(left)和r(right)的函数,都是对之前函数的一个扩展,带l的表示至始至终从右到左操作,记住左边才是最终目的地,而带r的至始至终都是从左到右,因为右边才是它的终极目标

26、split()

分割函数,默认是以空格分割(space)生成一个列表,如果其他字符分割,输入其他字符参数

1 2 3 4 5 6 7 8 9 10 11 12 >>> name = "qigao zhang" #默认为空,按空格分割 >>> name.split() ['qigao''zhang'] >>> name = "qigao+zhang" #以'+'字符分割 >>> name.split("+") ['qigao''zhang'] #以'\n'分割 >>> name = "qigao\nzhang" >>> name.split("\n") ['qigao''zhang']

 27、splitlines()

以换行符分割,这个一般在windows上开发,移到Linux上执行,或者在Linux上开发,移到Windows上执行,因为换行在windows上是"\r\n",linux上是'\n'

1 2 3 >>> name = "qigao\nzhang" >>> name.splitlines() ['qigao''zhang']

 28、swapcase()  (swapcase 交换盒)

把大写换成小写,把小写换成大写

1 2 3 >>> name = "ZHang" >>> name.swapcase() 'zhANG'

29、startswith(prefix, start=None,end=None)    (prefix 前缀)

判断是否已prefix结尾,是返回True,否返回Fales

prefix:表示字符或者字符或者字符串,start:开始位,end:结束位,start和end默认为空是,表示从整个字符串的结尾去判断

1 2 3 4 5 >>> name = "zhang qigao" >>> name.startswith("zhang"#开头找到"zhang" 字符串 True >>> name.startswith("h",3,5)  #在索引3到5之间没有找到以字符'h'开头 False

30、replace(old,new[, max])

old:将被替换的子字符串; new:新字符串,用于替换old子字符串;max:可选字符串, 替换不超过 max 次

1 2 3 4 5 6 7 8 9 10 >>> name = "zhang is shuai ge" >>> name.replace('is','was') 'zhang was shuai ge' #原字符串没有改变 >>> name 'zhang is shuai ge' >>> name.replace('is','was',0) 'zhang is shuai ge' >>> name.replace('is','was',1) 'zhang was shuai ge'

31、zfill(width)   (fill 填满,zero 零)

字符的长度是否大于等于(>=)with,如果比width小,则在字符串钱用0填充,如果>=width,则返回原字符串

1 2 3 4 5 6 7 8 9 >>> name = "zhangqigao" >>> len(name) 10 #width大于字符串长度 >>> name.zfill(11) '0zhangqigao' #width小于等于字符串长度 >>> name.zfill(10) 'zhangqigao'