python语言之字符串与字节

(一)字符串的本质

内存中总是存储解码以后的文本,编码只作用于文件存储和中间媒介转换

(二)常见的字符编码

#获得代码点
ord('A')
65
#从代码点获取对应字符
chr(65)
'A'
  • ASCII(存储一个Byte 0-127)
  • latin-1(存储一个Byte 128-255)
  • UTF16 (两个字节存储字符)
  • UTF32 (四个字节存储字符)
  • UTF8 (可变字节)

(三)字节与文本的编解码

编码

转变为bytes

s1 = 'ABCD'
s1.encode('ascii')
b'ABCD'
s1 = '中国'
s1.encode('utf8')
b'\xe4\xb8\xad\xe5\x9b\xbd'
--------------------------------------------
#从文件中读取
open('data.txt','rb').read()
b'\xd6\xd0\xb9\xfa'
---------------------------------------------
bytes('中国','utf8')
b'\xe4\xb8\xad\xe5\x9b\xbd'
bytes([64,75,85])
b'@KU'
---------------------------------------------
b = b'abc'
type(b)
<class 'bytes'>

转变为bytearray

s1 = '中国'
ba = bytearray(s1,'utf8')
type(ba)
<class 'bytearray'>
ba
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd')
ba.append(21)#不能超过256
ba
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15')
ba + b'abc'
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15abc')
ba.decode('utf8')
'中国\x15'

不指定编码格式,系统默认采用utf8

往文件中写数据,默认编码格式为操作系统编码格式

解码

b = b'\xe4\xb8\xad\xe5\x9b\xbd'
b.decode('utf8')
'中国'
---------------------------------------------
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15abc')
ba.decode('utf8')
'中国\x15'

(四)BOM处理

BOM:字节顺序标记

open('data.txt','W',encoding='utf-8-sig')
open('data.txt','r',encoding='utf-8-sig')
posted @ 2020-01-08 20:44  sowhat1943  阅读(265)  评论(0编辑  收藏  举报