为了方便大家拷贝笔记,本文采用md源码格式
[TOC]
# str 字符
## 基本功能
```
1、按索引取值(正向取+反向取):只能取
msg='hello world'
print(msg[0],type(msg[0]))
print(msg[-1]) #倒序取值,倒数第一个为-1
#注意:字符串,可以实现使用索引取值,元素为每个字符(包含空格)
2、切片(顾头不顾尾,步长)
print(msg[0:7]) #>=0
print(msg[0:7:1]) #>=0 <7 步长为1
print(msg[0:1:2]) #>=0 <1 步长为2
print(msg[3:1:-1]) #>=3 <1 步长为-1(也就是倒序)从第4个值开始取,取到第一个值(第一个值不算),倒序取
print(msg[-1::-1]) #倒序取值,从倒数第一个值,取到索引0
print(msg[0::-1]) #倒序取值,第0个值,取到0(也就是说包含索引0的值)
3、长度
print(msg._len_())#或者使用下面的
print(len(msg))#计算值的总长度,一共多少个字符
4、成员运算in和not in
5、循环
```
## capitalize(self) 首字母大写
```
S = 'suiyang'
v = S.capitalize()
print(v)
结果:Suiyang
```
## casefold(self) 将所有大写变小写
```
S = 'SuiYang'
v = S.casefold()
print(v)
结果:suiyang
```
## center(self, width, fillchar=None) 文本居中
```
S = 'suiyang'
v = S.center(10)
print(v)
结果:(有1个空格→) suiyang (←有2个空格)
v = S.center(11,'帅')
print(v)
结果:帅帅suiyang帅帅
v = S.center(8,'帅')
print(v)
结果:suiyang帅
v = S.center(5,'帅')
print(v)
结果:suiyang
```
## count(self, sub, start=None, end=None) 传入值在字符串中出现的次数
```
S = 'suisuiyangyang'
v = S.count('sui')
print(v)
结果:2
v = S.count('sui',6)
print(v)
结果:0
v = S.count('sui',0,3)
print(v)
结果:1
```
## encode(self, encoding='utf-8', errors='strict') 转换成字节
```
S = '隋阳'
v = S.encode(encoding='utf-8')
print(v)
结果:b'\xe9\x9a\x8b\xe9\x98\xb3'
```
## endswith(self, suffix, start=None, end=None) 是否以xx结尾
```
S = 'suiyang'
v = S.endswith('yang')
print(v)
结果:True
v = S.endswith(("a", "g"))
print(v)
结果:True
v = S.endswith(("a", "n"))
print(v)
结果:False
v = S.endswith(("a", "g"), 0, 5)
print(v)
结果:True
```
## expandtabs(self, tabsize=8) 找到制表符\t,进行替换
```
S = 'sui\tyang'
v = S.expandtabs(10)
print(v)
结果:sui yang(←中间有7个空格)
```
## find(self, sub, start=None, end=None) 找到指定子序列的索引位置:不存在返回-1
```
S = 'suiyang'
v = S.find('sui', 0, 2)
print(v)
结果:-1
v = S.find('sui', 0, 3)
print(v)
结果:0
```
## format(*args, **kwargs) 字符串格式化
```
S = "我是:{0};年龄:{1};性别:{2}"
v = S.format("隋阳",18,'男')
print(v)
结果:我是:隋阳;年龄:18;性别:男
```
## format_map(self, mapping) 字符串格式化
```
S = "我是:{name};年龄:{age};性别:{gender}"
v = S.format_map({'name':"隋阳",'age':18,'gender':'男'})
print(v)
结果:我是:隋阳;年龄:18;性别:男
```
## index(self, sub, start=None, end=None) 找到指定子序列的索引位置
```
S = 'suiyang'
v = S.index('sui', 0, 3)
print(v)
结果:0
```
## isalnum(self) 是否是数字、汉字、字母
```
S = 'SuiYang94帅'
v = S.isalnum()
print(v)
结果:True
```
## isalpha(self) 是否是字母、汉字
```
S = 'SuiYang帅'
v = S.isalpha()
print(v)
结果:True
```
## isdecimal(self) 是否是阿拉伯数字
```
S = 'SuiYang111'
v = S.isdecimal()
print(v)
结果:False
```
## isdigit(self) 是否是数字
```
S = '123②'
v = S.isdigit()
print(v)
结果:True
```
## isidentifier(self) 是否是表示符
```
S = 'SuiYang'
v = S.isidentifier()
print(v)
结果:Ture
S = '###'
v = S.isidentifier()
print(v)
结果:False
```
## islower(self) 是否全部是小写
```
S = 'SuiYang'
v = S.islower()
print(v)
结果:False
```
## isnumeric(self) 是否是数字字符
```
S = '②2二'
v = S.isnumeric()
print(v)
结果:Ture
```
## isprintable(self) 是否可以打印
```
S = '\t'
v = S.isprintable()
print(v)
结果:False
```
## isspace(self) 是否全部是空格
```
S = ' '
v = S.isspace()
print(v)
结果:Ture
```
## istitle(self) 是否是标题版
```
S = 'Suiyang'
v = S.istitle()
print(v)
结果:Ture
```
## isupper(self) 是否全部是大写
```
S = 'SuiYang'
v = S.isupper()
print(v)
结果:False
```
## join(self, iterable) 元素拼接
> 返回一个字符串,它是迭代中的字符串的并置。 元素之间的分隔符是S.
```
S = '_'
iterable = 'suiyang'
v = S.join(iterable)
print(v)
结果:s_u_i_y_a_n_g
```
## ljust(self, width, fillchar=None) 左填充
```
S = 'suiyang'
v = S.ljust(10,'*')
print(v)
结果:suiyang***
```
## lower(self) 将所有大小变小写
```
S = 'SuiYang'
v = S.lower()
print(v)
结果:suiyang
```
## lstrip(self, chars=None) 去除开头的字符(默认空格)
```
S = ' SuiYang'
v = S.lstrip()
print(v)
结果:suiyang
S = 'aaaaaSuiyang'
v = S.lstrip(*['a'])
print(v)
结果:Suiyang
```
## maketrans/translate 绑定对应关系 + 翻译
>maketrans(self, *args, **kwargs)
translate(self, table)
绑定对应关系 + 翻译
```
m = str.maketrans('aeiou','12345')
S = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
v = S.translate(m)
print(v)
结果:1kps4jf1sd5f1sdlkfj815sdf1kjsdfl;kj2r091sdf
```
## partition(self, sep) 分割,保留分割的元素
>S.partition(sep) -> (head, sep, tail) 在S中搜索分隔符sep,然后返回其前的零件,分隔符本身及其后面的零件。 如果找不到分隔符,则返回S和两个空字符串。
```
S = '我love你love她'
v = S.partition('love')
print(v)
结果:('我', 'love', '你love她')
```
## replace(self, old, new, count=None) 从左替换字符串
```
S = '我love你love她'
v = S.replace('love','hate',1)
print(v)
结果:我hate你love她
```
## rfind(self, sub, start=None, end=None) 从最大的索引开始查询
```
S = 'suiyang'
v = S.rfind('sui', 0, 3)
print(v)
结果:0
```
## rindex(self, sub, start=None, end=None) 从最大的索引开始找到指定子序列的索引位置:不存在报错
```
S = 'suiyang'
v = S.rindex('sui', 0, 3)
print(v)
结果:0
```
## rjust(self, width, fillchar=None) 右填充
```
S = 'suiyang'
v = S.rjust(10,'*')
print(v)
结果:***suiyang
```
## rpartition(self, sep) 从右边开始分割,保留分割的元素
```
S = '我love你love她'
v = S.rpartition('love')
print(v)
结果:('我love你', 'love', '她')
```
## rsplit(self, sep=None, maxsplit=-1) 从右开始分割元素
```
S = '我love你love她'
v = S.rsplit('love')
print(v)
结果:['我', '你', '她']
```
## rstrip(self, chars=None) 去除尾部空格
```
S = 'suiyang '
v = S.rstrip()
print(v)
结果:suiyang
```
## split(self, sep=None, maxsplit=-1) 分割
```
S = '我love你love她'
v = S.split('love')
print(v)
结果:['我', '你', '她']
```
## splitlines(self, keepends=None) 按回车生产列表
```
S = '我\n你\n她'
v = S.splitlines()
print(v)
结果:['我', '你', '她']
```
## startswith(self, prefix, start=None, end=None) 是否以xx开始
```
S = 'suiyang'
v = S.startswith('sui')
print(v)
结果:True
n = S.startswith('s',1,3)
print(n)
结果:False
```
## strip(self, chars=None) 移除空白,\n,\t
```
S = ' suiyang '
v = S.strip('sui')
print(v)
结果:suiyang
```
## swapcase(self) 大小写转换
```
S = 'SuiYang'
v = S.swapcase()
print(v)
结果:sUIyANG
```
## title(self) 转换成标题版
```
S = 'sui yang'
v = S.title()
print(v)
结果:Sui Yang
```
## upper(self) 转换大写
```
S = 'sui yang'
v = S.upper()
print(v)
结果:SUI YANG
```
## zfill(self, width) 填充0
```
S = 'suiyang'
v = S.zfill(10)
print(v)
结果:000suiyang
```
# str类型总结
1. 只能存在一个值
1. 有序
1. 不可变:值变,id变,不可变==可hash