1、字符串的驻留机制和查找
#字符串驻留机制
'''
对相同的字符串只保留一份拷贝,后续创建相同字符串,不会开辟新的空间
'''
a='python'
b="python"
c='''python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
'''
驻留机制的几种情况
1、字符串长度为0或者1时
2、符合标识符的字符串
3、字符串只在编译时驻留,而非运行时
4、【-5,256】之间的整数数字
拼接字符串和修改字符串比较影响性能,所以拼接时使用join方法
'''
s='hello,hello'
print(s.index('lo'))
print(s.find('lo'))
print(s.rindex('lo'))
print(s.rfind('lo'))
'''index找不到就报错,find找不到返回-1'''
a=s.upper()
print(a,id(a))
b=s.lower()
print(b,id(b)) #转换之后,产生一个新的字符串对象
print(s,id(s))
2、python的分割函数
s='hello world liyu'
lst=s.split() #默认用空格分隔
print(lst)
s1='hello|world|python'
print(s1.split(sep='|'))
print(s1.split(sep='|',maxsplit=1)) #指定最大分割一个
s='hello,python'
print(s.replace('python','java'))
s2='hello,python,python,python'
print(s2.replace('python','java',2))
lst=['hello','java','python']
print('|'.join(lst)) #字符串的连接
print(''.join(lst))
print('*'.join('python'))
'''is和=='''
'''is比较的是id是否相等,==比较的是value是否相等'''
a=b='liyu'
c='liyu'
print(a==c)
print(a is c)
'''字符串的切片操作:左闭右开'''
s33='spontaneous'
print(s33[3:6:1])
print(s33[::2]) #从开始到最后,步长为1
print(s33[::-1]) #默认从最后开始,最开始结束,倒置
3、字符的格式化操作:
'''格式化字符串'''
name='张三'
age=23
print('我叫%s,今年%d岁' % (name,age))
print('我叫{0},今年{1}岁'.format(name,age))
print(f'我叫{name},今年{age}岁')
'''精度设置'''
print('%10d' % 99)
print('%.3f' % 3.1415926)
print('%10.3f' % 3.1415926)
print('{0:.3f}'.format(3.14159))
print('{0:10.3f}'.format(3.14159))
print('{:.3f}'.format(3.14159))
'''字符串的编码和解码'''
s='送你一朵小红花'
byte=s.encode(encoding='GBK')
print(byte.decode(encoding='GBK'))
byte=s.encode(encoding='UTF-8')
print(byte.decode(encoding='UTF-8'))