字符串and函数 Python学习day18

字符串的切片操作

        字符串是不可变类型

                不具备增、删、改等操作

                切片操作将产生新的对象

s = 'hello,Python'
s1 = s[:5]  #由于没有指定起始位置,所以从0开始切
s2 = s[6:]  #由于没有指定结束位置,所以切到字符串的最后一个元素
s3 = '!'
newstr = s1 + s3 + s2

print(s1)
print(s2)
print(newstr)
print('-------------------')
print(id(s1))
print(id(s2))
print(id(s3))
print(id(newstr))

print('----------切片[start:end:step]-------------')
print(s[1:5:1])     #从1开始截到5(不包含5),步长为1
print(s[::2])    #默认从0 开始,没有写结束,默认到字符串的最后一个元素,步长为2,两个元素之间的索引间隔为2
print(s[::-1])  #默认从字符串的最后一个元素开始,到字符串的第一个元素结束,因为步长为负数
print(s[-6::1])     #从索引为-6开始,到字符串最后一个元素结束,步长为1

格式化字符串 

        %作占位符                

        '我的名字叫:%s, 今年 %d岁了'        %                (name,  age)

        定义的格式化字符串                        固定符号        实际值 实际值

        {}作占位符

        ‘我的名字叫:{0}, 今年{1}岁了,我真的叫:{0}’.format(name, age)

name = '张三'
age = 20
print('我叫%s, 今年%d岁' % (name,age))


#(2) {}
print('我叫{0},今年{1}岁'.format(name,age))


#(3) f-string
print(f'我叫{name}, 今年{age}岁')




print('%10d' % 99)  #10表示的是宽度
print('%f' % 3.1415926) #.3表示是小数点后三位
#同时表示宽度和精度
print('%10.3f' % 3.1415926) # 一共总宽度为10,小数点后3位

print('hellohello')


print('{0:.3}'.format(3.1415926))   #.3表示的是一共是3位数

print('{:.3f}'.format(3.1415926))   #.3f表示是3位小数

print('{:10.3f}'.format(3.1415926)) #同时设置宽度和精度,一共10位,3位是小数

字符串的编码转换

        为什么需要字符串的编码转换

        A计算机                                                                                B计算机

str在内存中以Unicode表示 —>编码->byte字节传输->解码->         显示

        编码与解码的方式

        编码:将字符串转换为二进制数据(bytes)

        解码:将bytes类型的数据转换成字符串类型

s = '天涯共此时'
# 编码
print(s.encode(encoding = 'GBK'))   #在GBK这种编码格中,一个中文占两个字节
print(s.encode(encoding = 'UTF-8')) #在UTF-8这种编辑格式中,一个中文占3个字节

#解码
#byte代表就是一个二进制数据(字节类型的数据)
byte = s.encode(encoding = 'GBK')   #编码
print(byte.decode(encoding = 'GBK'))  #解码

byte = s.encode(encoding = 'UTF-8')
print(byte.decode(encoding = 'UTF-8'))

上一篇:SSE手肘法确认kmeans的k值——Python实现过程中的问题


下一篇:idea编辑器乱码File was ; loaded in the wrong encoding: ‘UTF-8‘