文章目录
- 一. 字符串
- 1.1 字符串切片操作
- 1.2 格式化字符串
- 1.2.1 内容填充
- 1.2.2 宽度精度
- 1.3 编码解码
一. 字符串
1.1 字符串切片操作
- 字符串是不可变类型
- 不具备增、删、改操作
- 切片操作将产生新的对象,但如果是相同的字符串,对象不变。
- 操作格式:
s[start:end:step]
- start:截取的起始点、包含、默认为 0
- end:截取的结束点、不包含、默认到结束
- step:步长、默认为1,若为-1,则表示逆序
s = 'hello,Python'
print(s[:5]) # hello
print(s[6:]) # Python
s1 = s[::1]
s2 = s[::-1]
print(s1) # hello,Python
print(s2) # nohtyP,olleh
print(id(s)) # 1940266368688
print(id(s1)) # 1940266368688
print(id(s2)) # 1940267846832
1.2 格式化字符串
1.2.1 内容填充
共有三种方法:
%
占位符:其中%s
字符串、%d
整数、%f
浮点数str.format()
:配合{}
- f-string
name = '张三'
age = 20
# 1
print('我叫%s,今年%d岁' % (name,age))
# 2
print('我叫{0},今年{1}岁,我今年真的是{1}岁!'.format(name,age))
# 3
print(f'我叫{name},今年{age}岁')
1.2.2 宽度精度
%占位符
宽度精度的限制:
print('%10d' % 99) # 10表示的是宽度
# 输出:' 99'
print('%f' % 3.1415926) # 默认保留6位小数(四舍五入)
# 输出:'3.141593'
print('%.3f' % 3.1415926) #.3表示是小数点后三位
# 输出:'3.142'
print('%10.3f' % 3.1415926) #共总宽度为10,小数点后3位
# 输出:' 3.142'
{}
宽度精度的限制:
print('{0:.3}'.format (3.1415926)) # 3表示的是一共是3位数
# 输出:'3.14'
print('{:.3f}'.format (3.1415926)) # 3f表示是3位小数
# 输出:'3.142'
print('{:10.3f}'.format(3.1415926)) #同时设置宽度和精度, 一共是10位,3位是小数
# 输出:' 3.142'
1.3 编码解码
爬虫技术 肯定会用到。
通过encode
和decode
函数可以实现字符串的编码方式和解码方式的设定,不对应的编解码方式会产生报错。
- GBK编码格式:一个中文占两个字节
- UTF-8编辑格式:一个中文占三个字节
pikaqiu = '皮卡丘'
# 编码
print (pikaqiu.encode(encoding='GBK'))
# b'\xc6\xa4\xbf\xa8\xc7\xf0'
print (pikaqiu.encode(encoding='UTF-8'))
# b'\xe7\x9a\xae\xe5\x8d\xa1\xe4\xb8\x98'
# 解码
byte=pikaqiu.encode (encoding='GBK') # byte代表就是一个二进制数据(字节类型的数据)
print (byte.decode (encoding='GBK')) # 解码:皮卡丘
注意:编码和解码的方式不同会报错,若用UTF-8
方式解码byte,会产生如下错误:
UnicodeDecodeError:
'utf-8' codec can't decode byte 0xbf in position 2: invalid start byte