文件和數據格式化
數據格式化:將一組數據按照一定規格和式樣進行規範:表示、存儲、運算等
- 文件的使用
- 一維數據的格式化和處理
- 二維數據的格式化和處理
文件的使用
文件的類型
- 文件是數據的抽象和集合
- 文件是存儲在輔助存儲器上的數據序列
- 文件時數據存儲的一種形式
- 文件展現形態:文本文件和二進制文件
- 文本文件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()