Python编程Day7——字符编码、字符与字节、文件操作
一、字符编码
重点 *****
1. 什么是字符编码:将人识别的字符转换计算机能识别的01,转换的规则就是字符编码表
2. 常用的编码表:ascii、unicode、GBK、Shift_JIS、Euc-kr
3. 编码操作:编码encode()、解码decode()
4. 了解:编码表的发展史
A、ascii(ASCII)表:字母、数字、英文符号与计算机01标识符的对应关系
思考:如何将128个字符用01完全标签
二进制:1111111=====>>>255====>>1bytes(1字节)====>>8个二进制位 B、中国研究汉字与计算机01标识符的对应关系:gb2312====》》GBK===》》GB18030 日本:Shift——JIS C、制造一个可以完成万国与计算机01标识符的对应关系编码表 编码表;Unicode表
py2:ascii,没有按万国编码,原因py2要诞生要先有万国编码
py3:utf-8.采用万国编码来解释文本内容
| 编码类型 | 计算机存取方式 | 汉字存储 | 英文存储 | 空间节省 | 读取效率 |
Unicod |
内存 | 2个字节 | 2个字节 | 占据空间较多 | 极高 |
utf-8 |
硬盘、cpu | 3-6个字节 | 1个字节 | 占据空间较少 | 低 |
5、文件头****
告诉puthon解释器按照什么编码来解释文件内容
功能:编码解码:原义字符串,不对字符串内部做任何操作(eg::\n的转化)
r'abc\nabc'>>>>输出'abc\nabc'
u''之间转化b
编码:u''.encode('utf-8')|bytes(b'',encode('utf-8'))
解码:b''.ecode('utf-8')|str(b'',encode('utf-8'))
知识储备
电脑三大核心:cpu - 内存 - 硬盘(数据的存取过程)
软件及python解释器读取文件过程:启动 - 读取 - 展示|解释执行
python2环境的文件头:# coding: 编码格式
简介与发展
1. ascii - 各国编码 - 万国编码
2. 存取不一致的乱码现象
3. unicode与utf-8
核心
编码操作:编码encode()、解码decode()
二、字符与字节
重点*****
1. 字节的存储方式:8个二进制位
2. 字符所占字节数:根据编码的不同,所占字节数可能不同
了解
u、b格式字符串转换: str(b'', encode='utf-8')、bytes(u'', encode='utf-8')
3、三种字符串
Unicode字符串,默认字符串
s1=u'abc你好\n不好'
print(s1) #>>>输出abc你好 n不好
字节字符串
s2=b'abc'
print(s2) #>>>输出b'abc'
原义字符串:不对字符串内部做任何操作
s3=r'abc你好\n不好'
print(s3) #>>>输出abc你好\n不好
4、编码与解码
s='123呵呵'
n_b=bytes(s,encoding='utf-8')
print(n_b) # 输出结果为 b'123\xe5\x91\xb5\xe5\x91\xb5'
b=b'123\xe5\x91\xb5\xe5\x91\xb5'
n_s=str(b,encoding='GBK') # 可以换成gbk的字符编码
print(n_s)
5、 重点********
将u字符串编码b字符串
print(u'你好'.encode('utf-8'))
将b字符串解码成u字符串
print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8'))
三、文件操作
重点*****
1. 文件操作的三步骤:打开文件 - 使用文件 - 关闭文件
A、打开文件,变量名=文件空间 文件路径、操作模式(读/写)、编码
f=open('a.txt','r',ebcoding='utf-8')(新建a.txt文件-填写相应的内容)
B、操作文件
data=f.read(2) 将所有内容读取出来,如果设置读取长度如(2),按照规定长度读取数据
print(data)
一次读取一行
line=f.readline()
print(line)
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)
C、关闭文件
f.close() 是否操作心态对文件的持有,变量f还被应用程序持有
del f 系统自动回收
print(f)
2. 文件操作三要素:文件源、操作模式、编码
3. with语法:with open(...) as 别名, ..., open(...) as 别名: pass
4. 重点方法:read() | write() | readline() | close() | f.flush() | f.seek()
5、操作模式 w
主模式:r:读 | w:写 | a追加
从模式:b :按字节操作照| t:按照字符操作 | +:可读可写
了解:x :异常写| U;被遗弃了
基础写
文件不存在:会新建文件,再操作文件
问价存在:先清空文件,在操作文件
w = open('b.txt', 'w', encoding='utf-8')
w.write('456')
w.close()
print('end')
操作方法
读:read() | readline() | readlines()
写:write() | writelines() | flush()
光标:seek() | tell()
特征:encoding | closed
了解:readable() | writable() | name
案例
1. 文件复制
2. 文件修改
了解:py文件脚本机制
Python编程Day7——字符编码、字符与字节、文件操作的更多相关文章
- Python编程笔记二进制、字符编码、数据类型
Python编程笔记二进制.字符编码.数据类型 一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存 ...
- 19-3-8Python中编码的进阶、文件操作初识、深浅copy
编码的进阶 ASCII:英文字母,数字,特殊符号,——> 二进制的对应关系 Str: 1个字符——> 1个字节 Unicode:万国码:世界上所有的文字与二进制的对应关系 1个字符——& ...
- Python爬虫与数据分析之进阶教程:文件操作、lambda表达式、递归、yield生成器
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
- java字符编码,字符转码
编码:String->byte[]; str.getBytes(charsetName) 解码:byte[]->String; new String(byte[],charsetName) ...
- java字节流和字符流,以及java文件操作
A.首先说字节流:1.字节流在操作的时候不会用到缓冲区(也就是内存)2.字节流可用于任何类型的对象,包括二进制对象3.字节流处理单元为1个字节,操作字节和字节数组.InputStream是所有字节输入 ...
- Java字符流和字节流对文件操作
记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后自己查询.Java的IO流分为字符流(Reader,Writ ...
- Python全栈之路4--内置函数--文件操作
上节重点回顾: 判断对象是否属于某个类,例如: 列表中有个数字,但是循环列表判断长度,用len会报错;因为int不支持len,所以要先判断属于某个类,然后再进行if判断. # isinstance(对 ...
- Python 自学基础(一)——元组 字典 文件操作
格式化输出 name = input("请输入你的名字:") age = input("请输入你的年龄:") msg = ''' -------------in ...
- python基础知识-7-内存、深浅、文件操作
python其他知识目录 1.一些对内存深入理解的案例 以下列举列表,列表/字典/集合这些可变类型都是一样的原理 变量是个地址,指向存储数据的内存空间的地址,它的实质就相当于c语言里的指针.变量和数据 ...
随机推荐
- 初识STM32中的USMART组件
今天看了usmart那部分的模块,感觉使我们stm32的学习变更加方便,你可以通过串口查看和检验你所注册过的函数. USMART配步骤1.将USMART包添加到工程中,头文件要包括path2.添加所需 ...
- 2018年最新搜索引擎转跳JavaScript代码(竞价广告专用)
JavaScript代码如下,请放在script标签内: eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.r ...
- requests+正则爬取猫眼电影前100
最近复习功课,日常码农生活. import requests from requests.exceptions import RequestException import re import jso ...
- .net HttpListener 很慢
使用 HttpListener 做的webserver ,撒逻辑没有,内网跨机器访问,都要200ms 替换方案 EvHttpSharp.dll 使用了 libevent_core,libevent ...
- 携带cookie的跨域访问
携带cookie的跨域解决方案 有的时候访问后台的请求需要携带cookie以供后台分析,比如jQuery的ajax请求: $.ajax({ url: a_cross_domain_url, xhrFi ...
- 【python-appium】Appium的一些坑问题错误解决 与 技巧集锦
问题 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was ...
- drawable内存管理
图片对象: drawable bitmap etc.图片对象在Android上该缓存吗?什么时候缓存?怎么缓存?缓存后使用时怎么取出?怎么销毁?什么时候销毁? bitmap对象(new出来的) :需要 ...
- #227 Generate Random Whole Numbers within a Range
我们之前生成的随机数是在0到某个数之间,现在我们要生成的随机数是在两个指定的数之间. 我们需要定义一个最小值和一个最大值. 下面是我们将要使用的方法,仔细看看并尝试理解这行代码到底在干嘛: Math. ...
- hive 添加和删除分区
命令如下: 增加分区 ', p_loctype='MHA'); 删除分区 ALTER TABLE my_partition_test_table DROP IF EXISTS PARTITION (p ...
- 微软SSAS 错误 Internal error: Invalid enumeration value. Please call customer support! 不是此元素的有效值。
错误 118 Internal error: Invalid enumeration value. Please call customer support! 不是此元素的有效值. 错误 119 分析 ...