Python Str 字符串操作

Python String Operator

Posted by BlueFat on Friday, August 5, 2022

字符串str 不可变对象,Python3,字符串为Unicode类型

>>> s5=r"hello \n world"   #非转义的原始字符串,即不是换行了。
hello \n world

>>> name='sunday'; age=17
s9=f'{name},{age}'   #3.6支持f前缀(插值)

连接

+加号

>>> print('a'+'b')
ab

join方法

sep.join(iterable)

  • sep: 指定分隔符,将可迭代对你中字符使用分隔符拼接起来
  • 可迭代对象必须是字符串
  • 返回一个新的字符串
>>> a=''.join(['a','b'])
>>> print(a)
ab

字符查找

find

find(sub[,start[,end]]) -> int

  • 在指定的区间(start,end),从左到右,查找子串sub
  • 找到返回正索引,没找到返回-1
>>> s='www.baidu.com'
>>> print(s.find('bai'))
4
>>> print(s.find('bai',2))
4
>>> print(s.find('bai',2,6))
-1
>>> print(s.find('bai',200))
-1

rfind

rfind(sub[,start[,end]]) -> int

  • 在指定的区间(start,end),从右到左,查找子串sub
  • 找到返回正索引,没找到返回-1

index

index(sub[,start[,end]]) -> int
rindex(sub[,start[,end]]) -> int

跟find方法很像,但找不到会抛异常,推荐使用find方法

时间复杂度

find、index和count 都是O(n) len(string) O(1)

分割

split

split(sep=None, maxsplit=-1)-> list of strings

  • 从左至右
  • sep指定分割字符串,缺省的情况下空白字符串作为分隔符
  • maxsplit 指定分割的次数,-1 表示遍历整个字符串
  • 立即返回新列表 (原字符不可变)
>>> a='1,2,3,a,b,c'
>>> print(a.split())
['1,2,3,a,b,c']
>>> print(a.split(','))
['1', '2', '3', 'a', 'b', 'c']

rsplit

rsplit(sep=None, maxsplit=-1)-> list of strings

  • 从右向左开始切,但是输出的字符串字符不会反
  • sep 指定分割字符串,缺省的情况下空白字符串作为分隔符
  • maxsplit 指定分割的次数,-1 表示遍历整个字符串
  • 立即返回新列表(原字符不可变)

spltlines

spltlines([keepends]) -> list of strings

  • 按照行来切分字符串
  • keepends 指的是是否保留行分隔符
  • 行分隔符包括\n、\r\n、 \r等

partition

partition(sep) -> (head, sep, tail)

partition

  • 从左至右,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾 三元组(part1, sep, part2)
  • 如果没有找到分隔符,就返回头、2个空元素的三元组
  • sep分割字符串,必须指定

rpartition

rpartition(sep) -> (head, sep, tail)

  • 从右至左,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组
  • 如果没有找到分隔符,就返回2个空元素和尾的三元组

移除

strip

strip([chars]) -> str

  • 在字符串两端去除指定的字符集chars中的所有字符
  • 如果chars没有指定, 去除两端的空白字符

lstrip

Istrip([chars])-> str 左开始

rstrip

rstrip([chars])-> str 从右开始

s='\t\r\na b c,d\ne\n\t'
print(s.strip('\t\n')
print(s.strip('\t\ne\r')

头尾匹配

startswitch

startswitch 以开头精确匹配

endswitch

endswitch 从结尾精确匹配