字符串是python编程过程中最常用的类型,熟练的掌握其函数及相关特性能提高开发效率(本文主要用于个人学习笔记)。
以下是主要的字符类函数:
字符串大小写转换类型方法:
(1)capitalize()
首字母大写
s = 'capitalize'
print(s.capitalize())
→Capitalize
(2)lower()
大写变小写
s = 'LOWER'
print(s.lower())
→lower
(3)upper()
小写变大写
s = 'upper'
print(s.upper())
→UPPER
(4)swapcase()
大小写互换
s = 'sWaPcAsE'
print(s.swapcase())
→SwApCaSe
增删、修改类型方法:
(1)chars.join(iterable)
将chars参入iterable对象的遍历参数之间
a = '.'.join('abc')
print(a)
→a.b.c
b = ''.join(['a','b','c'])
print(b)
→abc
注:join()的效率要高于‘+=’,在将迭代对象转为字符串时优先选择join()方法。
(2)replace(old,new)
用new字符串代替old字符串
s = 'replace'
print(s.replace('e','a'))
→raplaca
(3)split(sep,maxsplit)
根据sep字符或字符串来分割self字符串,返回一个列表,其中maxsplit代表分割次数。
s = 'a,b,c'
print(s.split(',',1))
→['a', 'b,c']
c = 'abceadcerrcedd'
c = c.split('ce')
print(c)
→['ab', 'ad', 'rr', 'dd']
注:还存在rstrip(),从右至左分割。
(4)strip(chars)
去除开头与结尾的chars字符,多用于出去首尾空格符
s = ' strip '
c = s.strip()
print(c)
strip
注:存在rstrip(),从右至左开始。
(5)center(width, fillchar)/ljust(width, fillchar)/rjust(width, fillchar)
三种函数用法类似,同是用fillchar参数来填充str以达到宽度width,若width小于len(str)则不显示填充效果。
center()从中间展开填充:
s = 'center'
print(s.center(9,'*'))
→**center*
ljust()从左开始计数后填充:
s = 'ljust'
print(s.ljust(9,'*'))
→ljust****
rjust()从右开始计数后填充:
s = 'rjust'
print(s.rjust(9,'*'))
→****rjust
查询类型方法:
(1)find(sub, start, end)
在索引值start到end范围内查找sub子字符串,若存在返回索引值,否则返回-1。
s = 'find'
print(s.find('i'))
→1
s = 'find'
print(s.find('i', 1, 3))
→1
存在rfind(),从右找,索引值不会因此改变。
(2)index(sub, start, end)
同find(),但是找不到时会报错。
也存在rindex()。
判断类型方法:
(1)isalnum()
判断字符是佛为汉字或字母:
s1= 'a1C3b'
print(s1.isalnum())
→True
s2 = 'a1C 3b'
print(s2.isalnum())
→False
(2)isalpha()
判断是否为字母(或汉字)
s1= 'a1C3b'
print(s1.isalpha())
→False
s2 = 'aC好b'
print(s2.isalpha())
→True
(3)isdigit()
判断是否为纯数字(整数)
s1= 'a1C3b'
print(s1.isdigit())
→False
s2 = '123.4'
print(s2.isdigit())
→False
s3 = '1234'
print(s3.isdigit())
→True
(4)islower()、isupper()
是否都为小写、大写。
(5)istitle()
是否首字母大写。
(6)isspace()
是否都是空白字符(包括制表符\t\n\r等)
format方法
format方法的实用性很好,算得上是python字符串的一种优势,极大提高效率。
format()主要通过字符串中的{索引}、{关键字}来参入对应的值。
(1)对于{索引}而已,format里的参数必须按照对应顺序填写:
a = '这里{0}{1},{1}{0}西瓜皮,西瓜皮里{0}{2}'.format('有个','冬瓜皮','象拔蚌')
print(a)
→这里有个冬瓜皮,冬瓜皮有个西瓜皮,西瓜皮里有个象拔蚌
注:在替换数量少的情况下索引值可省略即{},但必须确保format里的参数数量和索引数量相同。
a = '这里{}{},{}{}西瓜皮'.format('有个','冬瓜皮','冬瓜皮','有个')
print(a)
→这里有个冬瓜皮,冬瓜皮有个西瓜皮
(2)对于{关键字},format会自动对应相应位置:
a = '这里{have}{pi},{pi}{have}西瓜皮,西瓜皮里{have}{jb}'.format(jb='象拔蚌',have='有个',pi='冬瓜皮')
print(a)
→这里有个冬瓜皮,冬瓜皮有个西瓜皮,西瓜皮里有个象拔蚌
(3)除此之外format还有填充和对齐的功能,这俩种功能往往一起使用:
‘^’.’<’.’>'分别表示中、左对齐、右对齐,后面带上总width,作用于center(),ljust(),rjust()相似:
a = 'aaa{name:*^8},bbb{char:*<9}'.format(name = '666',char=777)
print(a)
→aaa**666***,bbb777******
最后:
需要注意的是字符串类型不可改变,一个内存地址拥有一个值,以上所有关于字符串改变的方法意味着创建了新字符串对象。
如果遇到需要频繁更改字符串的情况,python的io模块提供了StringIO(str)方法,此方法很特别,能在不创建新对象的条件下直接修改字符串的值,用法如下:
import io
s = 'helloworld'
news = io.StringIO(s)
news.seek(5)
news.write('python')
print(news.getvalue())
→hellopython