'''字符串的方法
s.index() s.rindex()
s.find() s.rfind()
s.count()
s.replace()
s.partition() s.rpartition()
s.split() s.rsplit() s.splitlines()
s.join()
s.strip() s.lstrip() s.rstrip()
s.lower() s.upper() s.capitalize() s.title()
s.swapcase()
s.center() s.ljust() s.rjust() s.zfill()
s.startswith() s.endswith()
s.isdigit() s.isalpha() s.istitle() s.isalnum()
s.isspace() s.isupper() s.islower() s.isnumeric()
s.isdecimal() s.isidentifier()
s.isprintable()
s.format()
s.encode()
s.translate()
s.expandtabs()
s.maketrans()
'''
# 创建
s = 'asddd'
print(s)
s1 = str('Hello World!')
print(1, s1)
print(s.count('d')) # 返回给定字符串在监测字符串中的个数
# 修改 # 字符串没法修改,要做改变然后赋值给别的变量,使用别的变量才行
s2 = s1[2]
print(2, s2)
s3 = s1.replace('l', 'L', 2) # replace(旧字符串,新字符串,替换次数)新的替换旧的,
print(3, s3) # 只能填写字符串,就是带' '的,长度不限
s4 = s1.replace('q', 'Q', 2) # 没找到旧的字符串则不替换
print(4, s4)
# 切片
s5 = s1[::] # str[开始位置:结束为止(不包括):步长]
print(5, s5) # 从开始位置(0)开始截取字符串,默认步长为1且截取全部
s6 = s1[::-1] # 负数的意思是倒着,步长为负则倒着打,所以开始位置应该在结束位置后面,例如[5:1]
print(6, s6) # 负几代表倒数第几个位置
# 增加
# 可以直接用+号实现字符串之间的连接
print(s1+'hello')
s7 = s1.zfill(15) # zfill(int)填写int类型,表示用0来填够这个int长度的字符串
print(7, s7)
s8 = s1.ljust(15, '0') # ljust(width(int),str)左对齐,并用str字符串来填充,使这个字符串长度够指定的int
print(8, s8)
s9 = s1.rjust(15, '0') # 同上方法只是右对齐,center(width(int),shr)为居中显示,左右填充
print(9, s9)
s10 = s9.lstrip('0') # lstrip(str),删除字符串左边给定的str字符
s11 = ' p'.lstrip() # rstrip(str)为删除右边str字符串,strip为删除两边给定字符串
print(10, s10) # 默认为清除空格
print(11, s11)
# 删除
del s11 # del删除,有两种写法,del(要删除的东西)或者 del 要删除的东西
## print(12, s11)
# 操作
print(s1.capitalize()) # 把字符串第一个字母变成大写字母,其他符号有大写则变成小写
print(s1.title()) # 把遇到的词汇的第一个字母都变成大写,其它字母全变为小写
s12 = s1.upper() # 字母全部变成大写的
print(13, s12)
s13 = s1.lower() # 字母全部变成小写的
print(14, s13)
s14 = s1.swapcase() # 字母的大小写互换
print(15, s14)
s15 = ' '.join(s1) #a.join(b) 把a字符串放入a字符串的每个字符之间
print(16, s15)
n1 = s1.find('Wo', 0, len(s1)) # find(str, start, end)
print(n1) # 查找字符串str,在区间start和end之间
n2 = s1.find('WO', 0, len(s1)) # 找到了则返回找到时(从左到右)第一个位置的下标
print(n2) # 没找到则返回-1
n3 = s1.index('Wo', 0, len(s1)) # index(str, start, end)
print(n3) # 查找字符串str,在区间start和end之间
## n4 = s1.index('WO', 0, len(s1)) # 找到了的方法同上,不过没找到的时候不返回-1,要报错
## print(n4)
l1 = s1.split(' ', 1) # split(str, int)
print(l1) # 用给定字符串str(原串存在)把字符串分割成列表,默认为空格
l2 = s1.splitlines() # 原串不存在给定str是,不分割,直接变为列表
print(l2) # int给定分割次数,splitlines这个方法无参数
# splitlines以换行分割字符串为列表
s16 = s1.partition(' ') # partition(str)用给定字符串(原串中有)把字符串分为三个部分,放入元组里
print(17, s16) # 例如hello world!--->('hello',' ','world!')
# 还有rfind,rindex,rsplit,rpartition方法同上,只是方向是从右往左找
s17 = s1.startswith('ll', 2, 4) # 给定范围,开始的字符串与给定的字符串相等则返回真,否则返回假
print(18, s17)
s18 = s1.endswith('or', -5, -3) # 同上,只是变成了结尾的字符串
print(19, s18)
print(20, s1.isalpha()) # 判断是否是由全字母组成的字符串,bool型
print(21, s1.isalnum()) # 返回是否是字母或者数字组成的字符串,bool型
print(22, s1.isdigit()) # 返回是否是由数字组成的字符串,bool型
print(23, s1.isspace()) # 返回是否是由空格组成的字符串,bool型
# 还有一些is开头的判断字符串的,见名思意,均为判断的bool型
print(list(enumerate(s1)))
for i in enumerate(s1): # 转换枚举型,每个字符对应相应的序号(下标),组成元组
print(i, end=' ')
print()
for i, y in enumerate(s1): # 拆分枚举元组中序号(下标)和字符串中对应的字符
print(i, end=' ')
print(y)