python知识心得08 字符编码
昨日内容回顾
-
队列与堆栈
# 队列 # 先进先出 # 堆栈 # 先进后出 # 列表模拟实现 # append # pop -
字典内置方法
d = {'name':'jason','pwd':123} d['name'] # 取值的时候不推荐使用 d.get('name') # 推荐使用 d['name'] = 'tony' d['age'] = 18 d.keys() d.values() d.items() del d['name'] d.pop('name') d.popitem() d.setdefault() # 键存在不修改 而是获取键对应的值 # 键不存在则新建一个键值对 d.update() # 不推荐 没有 dict() dict({}) dict(name='jason',age=18) dict([['name','jason'],['pwd',123]]) -
元组及元组内置方法
# 小括号括起来 内部可以存放多个元素 # 元素与元素之间逗号隔开 元素可以是任意数据类型 元组是不可变类型 t = (111,222,333,444) # tuple # 容器类型内部存储元素的时候 如果只有一个元素那么也推荐你将逗号加上 # 元组相关面试题 t = (11,22,[11,22]) t[2].append(33) -
集合及集合内置方法
# 大括号括起来 内部可以存放多个元素 元素不是键值对形式 # 内部的元素只能是不可变类型 s = {1,2,3,4,5} # set # 空集合的定义需要使用关键字set # 1.去重 2.关系运算 '''集合内元素会自动去重(集合内的元素是无序)''' '''关系运算就是比较两个群体之间的差异(交叉并集)''' & - | ^ > <
今日内容详细
作业讲解
# 2.字典练习题
# 1.将列表中大于等于66的元素放入字典k1键对应的列表中
# 将列表中小于66的元素放入字典k2键对应的列表中
# nums=[11,22,33,44,55,66,77,88,99,90]
# dic={
# 'k1':[],
# 'k2':[]
# }
# 2.s='hello jason jason say hello sb sb sb'
# 统计字符串中每个单词出现的次数
# {'jason':2,...}
# 3.集合练习题
# 一.关系运算
# 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
# pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
# linuxs={'wupeiqi','oldboy','gangdan'}
# 1. 求出即报名python又报名linux课程的学员名字集合
# 2. 求出所有报名的学生名字集合
# 3. 求出只报名python课程的学员名字
# 4. 求出没有同时这两门课程的学员名字集合
# 二 去重并且保留原来的顺序
# l = [11,22,33,22,22,33,11,22,55,66,66,77,77]
# 1.去重不保留顺序
# 2.去重并且保留顺序
字符编码
# 计算机内部存储数据都是以二进制数字的形式存储
# 计算机基于电工作 而电信号只有高低电平两种状态
# 也就意味着计算机的世界里只能识别两种状态
# 我们人为的将高电平定义为数字1
# 低电平定义为数字0
# 0 你
# 1 我
# 单位换算(重要)
# 比特位bit(二进制数的个数)
# 8bit = 1bytes(字节)
# 1024bytes = 1KB
# 1024KB = 1MB
# 1024MB = 1GB
# 1024GB = 1TB
# 1024TB = 1PB
# 字符编码的研究仅限于文本文件(******)
# 为什么我们人类在使用计算机输入字符的时候电脑展示是人类能够看懂的字符
# 而计算机内部只识别01二进制
# 00001010 我
# 00001101 你
# 计算机二进制 设定好的对应关系 人类的字符
# 字符编码表
# 规定了人类的字符与数字之间的对应关系
字符编码发展史
# 一家独大
# 计算机是由美国人发明的 美国人需要计算机能够识别英文
# 所以发明了ASCII码(字符编码表)
# 记录了英文与数字的对应关系
# 1bytes来表示所有的英文及符号
# 8bit 256
# 所有的英文字母及符号加起来其实也不会超过128种可能
# 群雄割据
# 中国
# 中国人为了计算机能够识别中文发明了GBK码
# GBK码表
# 记录了中文、英文与数字的对应关系
# 2bytes来表示中文及符号
# 16bit 65535
# 1bytes来表示所有的英文及符号
# 生僻字可能会使用更多的bytes来表示
# 日本
# 日本人为了计算机能识别日文发明了shift_JIS码
# shift_JIS码表
# 记录了日文、英文与数字的对应关系
# 1bytes来表示所有的英文及符号
# 韩国
# 韩国人为了计算机能识别韩文发明了Euc_kr码
# Euc_kr码表
# 记录了韩文、英文与数字的对应关系
# 1bytes来表示所有的英文及符号
# 天下一统
# 群雄割据导致数据交互不通畅(乱码)
# unicode万国码
# 兼容万国字符
# 所有的字符统一使用2bytes表示 不够增加更多bytes
# utf8
# unicode transformation format
# 英文还是用1bytes
# 中文改用3bytes
# 内存使用的编码表是unicode 硬盘使用的是utf8
'''已经你们只需要记住文本文件编码统一使用utf8即可'''
字符编码实操
# 1.解决文件乱码的核心 文件以什么编码存的就以什么编码取
# 2.编码与解码(重要)
# 编码 将人类的字符按照指定的编码转换成计算机能够识别的数据 encode()
# 解码 将计算机能否识别的数据按照指定的编码转换成人类能够读懂的字符 decode()
# 3.python解释器默认编码
# python2默认的是ASCII码
# 在python2中定义字符串在前面加一个字母u
# 文件头指定编码
# -*- coding:utf8 -*-
# name = u'jason'
# python3默认的是utf8码
文件操作
```python
# 操作系统 windows mac linux双击文件
# 硬盘转 磁头读取数据保存文件
# 硬盘转 磁头写入数据
# 我们在操作文件的时候其实操作的是硬盘
'''文件其实是操作系统暴露给我们可以简单快捷的操作硬盘的接口'''
# 绝对路径与相对路径
# 绝对路径 非常详细的路径描述 无论什么人什么位置都可以找到
# 相对路径 有一个参考 只有对应的人才可以找到
# res = open(r'a.txt','r',encoding='utf8')
# print(res.read())
# res.close()
# 打开a.txt 使用变量名f指代改文件
# with open(r'a.txt','r',encoding='utf8') as f:
# print(f.read())
# 读取文件内容
# with子代码运行结束之后会自动调用close关闭文件资源
# """
# with open(文件路径,读写模式,编码格式) as 变量名:
# 子代码块
# 文件路径是必须的
# 读写模式和编码格式是可选的
# """
# 如果不指定读写模式 那么默认使用r
# 如果不指定编码格式 那么默认使用当前计算机内部默认编码
"""在中国所有的windows电脑内部默认的编码是gbk"""
with open(r'a.txt') as f:
print(f.read()) # 读取文件内容
# 取消转义
# res = r'D:\day08\a.txt'
# res1 = r'D:\day08\n.txt'
# res2 = r'D:\day08\t.txt'
# print(res,res1,res2)

浙公网安备 33010602011771号