一、字符编码

 什么是字符编码?

  能识别的是字符高级标识符,电脑只能识别0,1,要完成人与机器之间交流一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系)

 

 对应关系形成的结构称之为:编码表

 了解:编码表的发展史:

  1、ASCII:字母、数字、英文字符与计算机01标识符对应关系

  思考:如何将128个字符用01完全标签

  二进制:11111111=>255=>1bytes(1字节)=>8个二进制位

 

  2、中国:研究汉字与计算机01标识符的对应关系:gb2312=>GBK(***)=>GB18030

  日本:Shift_JIS

  棒子:Euc-kr

 

  3、制造一个可以完成万国字符与计算机01标识符的对应关系的编码表

  编码表:Unicode表

  py2:ASCII,没有按万国编码,原因py2要诞生先于玩过编码

  py3:utf-8采用万国编码来解释文本内容

 

  思考:Unicode与Utf-8什么关系?

  Unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占用空间较多,读取效率极高

  Utf-8:用3-6个字节来储存汉字,用1个字节来存储英文字母,占用空间较少,读取效率低

  总结:内存都是按Unicode存储数据,硬盘和cpu采用utf-8来存取数据

 

  Unicode与utf-8采用的是一张Unicode编码表,utf-8是Unicode编码表体现方式,变长储存数据

  变长优点:(大量数据都是以英文存在,所以utf-8空间更小)传输速度更快

 

  软件打开文件读取数据的流程:

  1、打开软件

  2、往计算机发出一个打开文件的指令,来打开文件

  3\读取数据渲染给用户(存取编码不一致,乱码)

 

  python解释器打开py文件的流程:

  1、打开软件(python解释器)

  2、往计算机发出一个打开文件的指令,来打开文件

  3、逐行解释打开的文件内容(存取编码不一致,无法正常解释,崩溃),将执行结果展示给用户

 

  解释失败的原因:

  py2默认按ASCII来解释文件内容,py3默认按UTF-8来解释文件内容

 

  文件头:encoding:编码表

 

二、三种字符串

1、Unicode字符串,默认字符串 

s1 = u"abc你好\n不好"
  print(s1)

2、字节字符串

s2 = b"abc123\xb7\xb7"
  print(s2)

3、愿意字符串:不对字符串内存做任何操作(eg:\n的转化)

s3=r"abc你好\n不好"
  print(s3)

   编码与解码

s = "123呵呵"
n_b = bytes(s,encoding="utf-8")
  print(n_b)

b =b"123\xe5\x91\xb5\xe5\x91\xb5"
n_s = str(b,encoding="GBK")
  print(n_s)

 重点:u""和b""之间的转换

#将u字符串编码成b字符串
u"".encode("utf-8")
例:print(u"你好".encode("utf-8"))
#将b字符串解码成u字符串 b"".decode("utf-8") 例:print(b"\xe4\xbd\xa0\xe5\xa5\xbd".decode("utf-8"))

 

三、文件操作

 文件:硬盘中一块储存空间(虚拟的文件)

 文件操作:根据文件名来操作硬盘的那块储存空间,操作方式:读read 写write

 1、使用文件的三步骤:

  1.1、打开文件

  变量名 = 文件空间

  文件路径 操作模式(读|写)编码

f = open("a.txt","r",encoding="utf-8")

  1.2、操作文件

#将所有内容读取出来,如果设置读取长度,就按照规定长度读取
data = f.read()    
print(data)

#一次读取一行
line = f.readline()
print(line)

#按行一次性全部读出
lines = f.readlines()
print(lines)

#逐步一行一行读取
#存入列表
l=[]
for line in f:
    l.append(line)
    print(l)

#去重
s = set()
for line in f:
    s.add(line)
print(s)

 3、关闭文件

f.close()   #释放炒作系统对文件的持有,变量f还被应用程序持有

print{f}

四、模式:

   主模式:r:读 w:写 a:追加

   从模式:b:按字节操作 t:按字符操作 +:可读可写

   了解:x:写异常 U:被遗弃了

#基础写
#文件不存在:会新建文件,在操作文件
#文件存在:先清空文件,在操作文件
w = open("b.txt","w",encoding="utf-8")
w = weite("456")
w.close()
print("end")