1.字符编码:
人识别的语言与机器识别的语言转化的媒介 *****
重点:什么是字符编码
人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系),对应关系形成的结构称之为:编码表.
了解:编码表的发展史
1. ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系
思考:如何将128个字符用01完全标签
二进制:11111111 => 255 => 1bytes(1字节) => 8个二进制位
2.中国:研究汉字与计算机01标识符的对应关系:gb2312 => GBK(***) => GB18030
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空间更小)传输速度更快
2.字符与字节:
字符占多少字节,字符串转化 ***
# unicode字符串,默认字符串
s1 = u'abc你好\n不好'
print(s1)
# 字节字符串
s2 = b'abc123\xb7\xb7'
print(s2)
# 原义字符串: 不对字符串内存做任何操作(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字符串
print(u'你好'.encode('utf-8'))
# 将b字符串解码成u字符串
print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8'))
3.文件操作:
操作硬盘中的一块区域:读写操作 *****
文件:硬盘中一块存储空间(虚拟的文件)
文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write
# 一、使用文件的三步骤
# 1、打开文件
# 变量名 = 文件空间
# 文件路径 操作模式(读|写) 编码
f = open('a.txt', 'r', encoding='utf-8')
# 2、操作文件
# data = f.read(3) # 将所有内容读取出来,如果设置读取长度,按照规定长度读取数据
# print(data)
# 一次读取一行
# line = f.readline()
# print(line)
# line = f.readline()
# print(line)# 按行一次性全部读出
# lines = f.readlines()
# print(lines)# 逐步一行一行读取
# l = []
# for line in f:
# # print(line)
# l.append(line)
# print(l)s = set()
for line in f:# print(line)s.add(line)
print(s)# 3、关闭文件
f.close() # 释放操作系统对文件的持有,变量f还被应用程序持有
# del f # 系统自动回收
print(f)# 二、模式:w
'''
主模式:r:读 | w:写 | a:追加
从模式:b:按字节操作 | t:按字符操作 | +:可读可写
了解:x:异常写 | U:被遗弃了
'''
# 基础写
# 文件不存在:会新建文件,再操作文件
# 文件存在:先清空文件,再操作文件
w = open('b.txt', 'w', encoding='utf-8')w.write('456')
w.close()
print('end')