文件和数据格式化
数据格式化:将一组数据按照一定规格和式样进行规范:表示、存储、运算等
- 文件的使用
- 一维数据的格式化和处理
- 二维数据的格式化和处理
文件的使用
文件的类型
- 文件是数据的抽象和集合
- 文件是存储在辅助存储器上的数据序列
- 文件时数据存储的一种形式
- 文件展现形态:文本文件和二进制文件
- 文本文件vs.二进制文件
- 文本文件和二进制文件值是文件的展示方式
- 本质上,所有文件都是二进制形式存储
- 形式上,所有文件采用两种方式展示
- 文本文件
- 由单一特定编码组成的文件,如UTF-8编码
- 由于存在编码,也被看成是存储着的长字符串
- 适用于例如:.txt文件、.py文件
- 二进制文件
- 直接由比特0和1组成,没有同意字符编码
- 一般存在二进制0和1的组织结构,即文件格式
- 适用于例如:.png文件、.avi文件等
f.txt文件保存:“中国是个伟大的国家!”
#文本形式打开文件
tf = open("f.txt"."rt")
print(tf.readline())
tf.close()
将上述代码和f.txt文件保存在同一个目录,运行后将会得到
#二进制形式打开文件
bf = open("f.txt","rb")
print(bf.readline())
bf.close()
将上述代码和f.txt文件保存在同一个目录,运行后将会得到
文件的打开和关闭
文件处理的步骤:打开-操作-关闭
文件的打开
文件的打开模式
七种:’r’ , ‘w’ , ‘x’ , ‘a’ , ‘b’ , ‘t’ , ‘+’
文件的关闭
文件内容的读取
方法:a.read(size=-1)、a.readline(size=-1)、a.readlines(hint=-1)
- 遍历全文本:方法一
- 遍历全文本:方法二
- 文件的逐行操作
- 逐行遍历文件:方法一
- 逐行遍历文件:方法二
数据的文件写入
操作方法:a.write(s) 、a.writelines(lines) 、a.seek(offset)
小结
- 文件的使用方式:打开-操作-关闭
- 文本文件&二进制文件,open(,)和close(,)
- 文件内容的读取:.read() .readline() .readlines()
- 数据的文件写入:.write() .writelines() .seek()
一维数据的格式化和处理
数据组织的维度
- 从一个数据到一组数据
- 维度:一组数据的组织形式
- 一维数据
- 由对等关系的有序或无序数据构成,采用线性方式组织
-
对应列表、数组和集合等概念
- 二维数据
- 由多个一维数据构成,是一维数据的组合形式
- 多维数据
- 由一维或二维数据在新维度上扩展形成
- 高维数据
- 仅利用最基本的二元关系展示数据间的复杂结构
- 数据的操作周期
- 存储<->表示<->操作
一维数据的表示
- 如果数据间有序:使用列表类型
- 列表类型可以表达一维有序数据
- for循环可以遍历数据,进而对每个数据进行处理
- 如果数据间无序:使用集合类型
- 集合类型可以表达一维无序数据
- for循环可以遍历数据,进而对每个数据进行处理
一维数据的存储
- 存储方式一:空格分隔
- 使用一个或多个空格进行存储,不换行
- 缺点:数据中不能存在空格
- 存储方式二:逗号分隔
- 使用英文半角逗号分隔数据进行存储,不换行
- 缺点:数据中不能由英文逗号
- 存储方式三:其他方式
- 使用其他符号或符号组合分隔,建议采用特殊符号
- 缺点:需要根据数据特点定义,通用性较差
一维数据的处理
- 存储<->表示
- 从空格分隔的文件中读入数据
- 从特殊符号分隔的文件中读入数据
- 采用空格分隔方式将数据写入文件
- 采用特殊分隔方式将数据写入文件
小结
- 数据的维度:一维、二维、多维、高维
- 一维数的表示:列表类型(有序)和集合类型(无序)
- 一维数据的存储:空格分隔、逗号分隔、特殊符号分隔
- 一维数据的处理:字符串方法 .split()和.join()
二维数据的格式化和处理
二维数据的表示
- 使用列表类型
- 列表类型可以表达二位数据
- 使用二维列表
- 使用两层for循环遍历每个元素
外层列表中每个元素可以对应一行,也可以对应一列 - 数据维度数数据的组织形式
- 一维数据:列表和集合类型
- 二维数据:列表类型
CAV格式与二维数据存储
- csv:Comma-Separated Values(由逗号分隔的值)
- 国际通用的一二维数据存储格式,一般.csv扩展名
每行一个一维数据,采用逗号分隔,无空行
Excel软件可读入输出,一般编辑软件都可以产生
如果某个元素缺失,逗号仍要保留
二位数据的表头可以作为数据存储,也可以另行存储
逗号为英文半角逗号,逗号与数据之间无额外空格 - 按行存?按列存?
- 按行存或按列存都可以,具体由程序决定
一般索引习惯:ls[row][column],先行后列
根据一般习惯,外层列表每个元素是一行,按行存
二维数据的处理
- 从CSV格式的文件中读入数据
- 将数据写入CSV格式的文件
- 采用二层循环
小结
- 二维数据的表示:列表类型,其中每个元素也是一个列表
- CSV格式:逗号分隔表示一维,按行分隔表示二维
- 二维数据的处理:for循环+.split()和.join()