Python等級考試(4): 文件和數據格式化

Python等級考試(4): 文件和數據格式化

來自專欄半導體材料與技術1 人贊了文章

我剛剛參加了今年的全國計算機等級考試二級Python編程,也是國內的首次Python等級考試。總體來說題目不難,對於我這種半路出家、直接應用的「野路子」來說,是一個鞏固基礎知識的契機。這裡將複習時的筆記整理成文章,以備日後查閱。

本系列將包括如下幾個部分,除此之外,還會更新一些番外和補遺。

1. 基本語法元素

2. 基本數據類型

3. 組合數據類型

4. 文件和數據格式化

5. 計算生態與內置函數

6. turtle, random, time庫

7. 第三方庫縱覽

以上內容是基於嵩天老師的《全國計算機等級考試二級教程——Python語言程序設計(2018年版)》所做的總結,基本結構與書本內容類似。嵩老師同時也是中國大學MOOC上多門Python編程課程的主講人,他的課程生動形象,且結合大量實操案例,是Python入門的精品課程。

本人能力有限,如有紕漏,還望大家批評指正。本文首發於知乎專欄「半導體材料與技術」,轉載請先私信作者。


文件包括文本文件和二進位文件兩種類型

二進位文件和文本文件最大的區別在於是否有統一的字元編碼。二進位文件只能當作位元組流,不能看作字元串。

Python處理文件的流程:打開-操作-關閉

Python 通過open( )函數打開一個文件,並返回一個操作這個文件的變數

<變數名> = open(<文件路徑及文件名>, <打開模式>)

open函數中,可以通過encoding = utf-8 來自定文件以 utf-8 編碼格式讀取

文件的打開模式

文件的讀取方法

文件不大,可以用f.read()一次性讀入文件,結果是一個字元串。

文件打開後,對文件的讀寫有一個讀取指針。當從文件中讀入內容後,讀取指針將向前進,再次讀取的內容將從指針的新位置開始。

f.seek( ) 方法能夠移動讀取指針的位置,f.seek(0)移動到文件頭,f.seek(2)移動到文件尾。

逐行讀取法:

f = open(data.txt, "r")for line in f: ***f.close( )

* 逐行變理文件僅針對文本方式,二進位方式打開沒有行的概念。

文件寫入方法

* 對文本文件進行 write() 方法時,write的參數必須是字元串類型。

使用 f.write(s) 的時候需要顯式地使用
對文本進行分行。如不分行,寫入的內容會被連接起來。

高維數據格式:HTML、XML、JSON等

* CSV:逗號分隔的存儲格式(Comma-Separated Values)

CSV文件的特點:

  1. 純文本格式,通過單一編碼標識字元;
  2. 以行為單位,開頭不留空行,行之間沒有空行;
  3. 每行表示一個一維數據,多行表示二維數據;
  4. 以英文半形逗號分隔每列數據,列數據為空也要保留逗號;
  5. 對於表格數據,可以包含或者不包含列名,包含列名時放置在文件第一行。

對於包含英文半形逗號的數據,以CSV文件保存時需進行轉碼處理。

二維列表存儲為CSV文件的方法:

ls = [[name, qq, date],[Miya,1234567,20180912],[Cognac,27364585,20180808]]f = open(data.csv, w)for row in ls:f.write(",".join(row) +
)f.close()

zip(x,y)函數:用來獲取兩個組合數據類型x和y,並將它們的元素交織返回。例如:

附:字典和JSON的異同

和Python字典最接近的是JSON。從形式來講,這兩者的確很像,都為 key:value 的形式。但本質上來講,字典是一種數據結構,json是一種格式;字典有很多內置函數,有多種調用方法,而json是數據打包的一種格式,並不像字典具備操作性,並且是格式就會有一些形式上的限制,比如json的格式要求必須且只能使用雙引號作為key或者值的邊界符號,不能使用單引號,而且「key」必須使用邊界符(雙引號),但字典就無所謂了。

形式上的相近也讓python提供了 json.loads() 轉換函數,方便json數據的調用。


推薦閱讀:

TAG:Python入門 | 計算機等級考試 |