字符串
创建及驻留机制
a = 'Python'
b = "Python"
c = '''Python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
//id得到的地址都是一样的,说明三个“Python”指向的都是同一个内存块。
字符串查询
一般用find因为不报异常
- index()查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出ValueError
- rindex()查找子串substr最后一次出现的位置,如果查找的子串不存在时,则抛出ValueError—式
- find()查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1
- rfind()查找子串substr最后一次出现的位置,如果查找的子串不存在时,则返回-1
s='hello,hello'
print(s.index('lo')) //3
print(s.find('lo')) //3
print(s.rindex('lo')) //9
print(s.rfind('lo')) //9
大小写转换
会产生一个新的字符串对象
s.upper()
s.lower()
s.swapcase()
s.capitalize()
s.title
对齐操作
第二个参数为填充符号,可以不写
s = 'hello,Python'
print(s.center(20,*))
****hello,Python****
print(s.ljust(20,*))
hello,Python********
print(s.rjust(20,*))
********hello,Python
//右对齐,只有一个参数,用0填充
print(s.zfill(20))
00000000hello,Python
字符串劈分操作
split()从左分
s = 'hello Python'
list1 = s.split()
['hello','Python']
s = 'hello|Python'
list2 = s.split(sep = '|') //选定分隔符
rsplit()从右分
s = 'hello Python'
list1 = s.rsplit()
['hello','Python']
常用判断
isidentifier()
isspace()
isalpha()
isdecimal()
isnumeric()
isalpnum()
s = 'hello Python'
print('1.',s.isidentifier()) #False
print('2.','socool'.isidentifier()) #True
print('3.','so_cool'.isidentifier()) #True
字符串替换
s='hello,Python'
print(s.replace('Python','Java')) //hello,Java
s='hello,Python,Python,Python'
print(s.replace('Python','Java',2)) //hello,Java,Java,Python
字符串合并
list1 = ['hello','java','Python']
print('|'.join(list1)) //hello|Java|Python
字符串比较
比较原始值
apple > app
apple > banana //97>98,自然是错的
print(ord('a') ,ord('b')) //97,98
字符串切片
字符串是不可变类型
不具备增删改曹操做、切片后产生新的对象。
s = 'hello,Python'
s1 = s[:5] //hello
s2 = s[6:] //Python
s3 = !
newstr = s1 + s2 + s3 //hello!Python
字符串格式化
为什么要格式化:
兹证明xxx,身份证号:xXx,现居家庭住址: xxx,为我公司在职员工,联系电话: xXx,因工作需要,每天需出入该小区,本单元每天早晚有定时消毒、测量体温、出入登记等防控疫情措施。
%作占位符
- %s
- %i %d
- %f
name = '张三'
age = 20
print('我叫%s,纪念%d岁' % (name,age))
{}作占位符
print('我叫{0},今年{1}岁'.format(name,age))
f-string
print(f'我叫{name},今年{age}岁')
一些注意点
print('{0 :.3}'.format (3.1415926))#.3表示的是一共是3位数 --3.14
print('{0:.3f}'.format(3.1415926))#.3f表示三位小数 --3.142
字符串的编码转换
为什么需要字符串的编码转换?
str在内存中以Unicode表示,但是传输的时候转化为byte字节传输,然后又在另一个电脑上以Unicode表示str,这个过程就需要编码、解码。
s='天涯共此时’
#编码
print(s.encode (encoding='GBK')) #在GBK这种编码格中一个中文占两个字节
print(s.encode(encoding='UTF-8'))#在UTF-8这种编辑格式中,一个中文占三个字节
#byte代表就是一个二进制数据(字节类型的数据)
byte=s.encode(encoding=' GBK')#编码
print(byte.decode(encoding='UTF-8’))#解码
---------------------------
“朝着一个既定的方向去努力,就算没有天赋,在时间的积累下应该也能稍稍有点成就吧。”