字符串
概述
类型
- str 字符串
- bytes 字节
- ybtearray 字节数组
字符编码架构
编码:Encoding:转换字符到原始字节形式
解码:Decoding:依据编码名称转换原始字节到字符的过程
字符集:赋值一个编码到某个字符,以便在内存中加载
字符串存储
编码只作用于文件存储或中间媒介转换时
内存中总是存储解码以后的文本
常见字符编码:
ASCII---存储在一个Byte 0-127
ord('A')----65
chr(104)----->'h'
内置函数
ord():获取字符代码点
chr():获取代码点对应字符
latin-1:存储在一个Byte 128-255
UTF-16:2个byte存储字符(另加2Byte作为标识) utf-32是按照4个Byte存储的
UTF-8:可变字节 :经常使用的
- 0-127使用单字节
- 128-2047 双字节存储
- 》2047 3-4字节
- 每byte使用128-255
字符的编码个解码
- str.encode(‘编码’) 将特定字符编码。
- bytes.decode('编码') 将字符编码解码为字符文本。
- import sys 模块下的! sys.getdefaultencoding() 获得默认的编码格式
open('data.txt,'r',encoding='utf-8'').read()
以utf8打开data.txt文件读取
open('data.txt','rb').read
以字节形式打开
b[0]--->97 b[0]=98 字节对象不支持原位改变值
类型转换bytes
手动声明 b'abcd' 字母加b实现转化
字符串编码 str.encode()
构造函数 bytes()
bytearray字节数组转化
byrearray('字符','编码')
.decode解码为字符串
s1-'abc'
ba=bytearray(s1,'utf8')
ba[]
-->97
ba[]=98 可以赋值
ba-->bytearray(b'bbc')
BOM处理:字节顺序标记
原始读取:
open('data.txt','r',encoding = 'utf-8').read()
加顺序标记 sig 字节顺序:
open('date.txt',‘r’,encoding='utf-8-sig').read 加顺序标记 sig 字节顺序
原始的创建:
open('date.txt','w','encoding = 'utf-8').write()
带有字节顺序标记的创建方式:
open('date.txt','w',encoding = 'utf-8-sig').write()