python之編碼解碼與檔案讀寫

2021-09-11 07:32:16 字數 2392 閱讀 4683

decode是編碼,解碼

python中各種事物以物件的形式存在

計算機中0,1要實現和人類語言的互譯,就需要由「字典」:

「字典」,被叫做編碼表。簡單來說,就是建立起人類語言和計算機語言一一對應的表。從人類語言到機器語言,我們稱之為「編碼(encode)」,從機器語言到人類語言,我們稱之為「解碼(decode)」。

英文,乙個字元只佔乙個位元組(乙個位元組,是二進位制的八位數)。

中文佔兩個位元組,編碼表(ascii)

注意:python3預設使用unicode編碼來處理我們輸入的內容。所以encode('unicode')是不能使用的。

可以使用ord()的方法,來獲取單個字元的十進位制整數編碼。

四種編碼格式,應用於不同場景:

記憶體」。資料在記憶體當中處理時,使用的格式是unicode,統一標準。

在硬碟上儲存,或者是在網路上傳輸時,用的是utf-8,因為省空間

一些中文的檔案,中文的**,還在使用gbk,和gb2312。

utf-8和unicode可以非常輕易地按照乙個規則來互相轉換

b代表『位元組』,位元組型別資料

不同編碼之間是可以轉換的,利用encode與decode

1.ascii編碼

print('k'.encode('ascii'))

結果為b'k'   這兩個k不一樣,第乙個k為字串,第二個為bytes型別的資料,只佔了乙個位元組

2.unicode編碼

注意:因為python3利用unicode,所以不可以直接用encode

使用ord()的方法,來獲取單個字元的十進位制整數編碼,使用char()來獲取整數對應的相應字元

print(ord('地球'))   print(char(12346))

3.gbk與utf-8 (都使用了encode,decode方法)

print('楓'.encode('gbk'))

#將漢字'楓'使用gbk編碼,得到:b'\xb7\xe3'

print(b'\xb7\xe3'.decode('gbk'))

#解碼,得到:楓

print('楓'.encode('utf-8'))

#將漢字'楓'使用utf-8編碼,得到:b'\xe6\x9e\xab'

print(b'\xe6\x9e\xab'.decode('utf-8'))

#解碼,得到:楓

可以看出,其用十六進製制表達的

二、檔案讀寫

模擬  把大象放進冰箱

就是   開——讀/寫——關    這三個步驟

1.開的操作語句

file1 = open('/users/motanyuan/desktop/abc.txt','r/w',encoding='utf-8')
注意

這個句子第乙個引數為檔案的儲存位址,如果計算機中沒有這個檔案,則系統自動建立乙個

第二個引數為 以讀的方式開啟還是以寫的方式開啟(在這個很重要,因為計算機保護資料的方式不一樣)

第三個引數是採用何種編碼

下表為第二個引數的性質:

#要注意r/w/a    只能修改字串,音訊等格式需要rb/wb/ab引數

w是清空檔案裡的內容,重新覆蓋             a是在原始檔後新增內容

2.讀寫

開啟了檔案以後,使用read/write函式讀寫

3.關閉檔案 

例子:

練習是:

將四個人的總得分寫入 1.txt檔案中

將資料按每一行來讀  readlines()函式

將每一行都分割成小的字串《——spilt()函式

split() 是把字串分割的,而還有乙個join(),是把字串合併的:

結果:

python檔案讀寫與編碼解碼

最近接觸到python的檔案讀寫與編碼解碼,非常頭疼,下面寫一下最近的思考 目的為 分析在ide中將中文字串以預設編碼寫入txt檔案,在windows系統下修改txt檔案的編碼,在ide中重新開啟此txt出現錯誤的原因 ide的預設編碼是utf 8 系統的預設編碼是ansi 對於以下 str 奧森山...

python 檔案編碼 解碼

ascii ascii碼是西歐編碼的方式,採取7位編碼,所以是2 7 128,共可以表示128個字元,包括34個字元,如換行lf,回車cr等 其餘94位為英文本母和標點符號及運算符號等。gb2321 gb2312 是對 ascii 的中文擴充套件。相容ascii。編碼規定 編碼小於127的字元與as...

Python 編碼與解碼

字串型別是對人類友好的符號,但計算機只認識一種符號,那就是二進位制 binary 數,或者說是數字。為了用計算機可以理解的數字描述人類使用的字元,我們需要一張數字與字元對應的表。我們都知道在計算機中 1 byte 8bits,可以儲存 0 255共256個值,也就是說 1byte最多可以表示 256...