02. 线性数据结构-字符串

119 阅读2分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战

1. 定义

单,双,三引号引住的字符序列,不可变类型,支持索引,可遍历,不可修改

2. 操作

由于字符串是不可变对象,所以不可以增删改

  • 伪增
# 使用s进行字符串拼接,可迭代对象本身为字符串,只有一个元素时不拼接 
's'.join(iterable) => new str 

# 常与map函数结合使用,map为映射函数,将range(9)映射为字符串 
"..".join(map(str, range(9)))

# 将两个字符串拼接在一起,返回新的str 
str1 + str2 => new str
  • 伪改
# 将字符串中的old替换成new字符,未找到old,则返回新的原字符串 
# count表示替换次数,默认全部替换 
str.replace(old, new[,count]) => new str

# 去除字符串两端的空白字符,也可指定字符 
str.strip() => new str
# 从[start,end)中查找sub元素,找回则返回其索引,没有则返回-1 
# .rfind()从右向左查找 
str.find(sub[,start[,end]]) => index

# 从[start,end)中查找sub元素,找回则返回其索引,没有则ValueError 
str.index(sub[,start[,end]) => index

# 返回sub的次数 
str.count(sub[,start[,end]]) => sub次数

# 在[start, end)区间内是否以str开头,结尾 
str.endwith(str[,start[,end]]) => bool 
str.startwith(str[,start[,end]]) => bool

# 获取字符串长度
len(str) => 字符串长度

3 其他操作

  • 字符串分割
# 按照sep指定分割字符串,默认未空白字符, maxsplit最大分割次数,默认为1
# 切掉分割字符串 
str.split(sep=None, maxsplit=1) => list of string

# 遇到sep就把字符串分为两部分,返回头,分隔符,尾组成的元组 
# 如果未找到sep,返回头,两个空元素的三元组, 
# 加r从右向左切 
str.partition(sep) => (head, sep, tail)
  • 字符串格式化简要版
1.占位符
# %s占位字符串,%占位数字
"My name is %s, %d, %s, %s"%('meng', 30, 40, 'abc')

2.format
"{}".format(*args, **kwargs) 

3.f-string
x, y = 3, 4
s1 = f"{x}->{y}" 
=> "3->4"