檔案內容為byte型別,讀取時轉為utf8

2021-09-03 01:44:26 字數 1032 閱讀 8045

在python3以後,字串和bytes型別徹底分開了。字串是以字元為單位進行處理的,bytes型別是以位元組為單位處理的。

bytes資料型別在所有的操作和使用甚至內建方法上和字串資料型別基本一樣,也是不可變的序列物件。

bytes物件只負責以二進位制位元組序列的形式記錄所需記錄的物件,至於該物件到底表示什麼(比如到底是什麼字元)則由相應的編碼格式解碼所決定。python3中,bytes通常用於網路資料傳輸、二進位制和檔案的儲存等等。可以通過呼叫bytes()生成bytes例項,其值形式為 b'***xx',其中 '***xx' 為一至多個轉義的十六進製制字串(單個 x 的形式為:\x12,其中\x為小寫的十六進製制轉義字元,12為二位十六進製制數)組成的序列,每個十六進製制數代表乙個位元組(八位二進位制數,取值範圍0-255),對於同乙個字串如果採用不同的編碼方式生成bytes物件,就會形成不同的值.

b = b''         # 建立乙個空的bytes

b = byte() # 建立乙個空的bytes

b = b'hello' # 直接指定這個hello是bytes型別

b = bytes('string',encoding='編碼型別') #利用內建bytes方法,將字串轉換為指定編碼的bytes

b = str.encode('編碼型別') # 利用字串的encode方法編碼成bytes,預設為utf-8型別

bytes.decode('編碼型別'):將bytes物件解碼成字串,預設使用utf-8進行解碼。

對於bytes,我們只要知道在python3中某些場合下強制使用,以及它和字串型別之間的互相轉換,其它的基本照抄字串。

簡單的省事模式:

string = b'******'.decode()直接以預設的utf-8編碼解碼bytes成string

b = string.encode()直接以預設的utf-8編碼string為bytes

使用所讀取的內容為檔案命名時亂碼

要批量查詢snplist.txt檔案裡的rs號是否在已經得到注釋好的檔案時,批量查詢,用 bin bash cat snplist.txt while read line dogrep w xx.hg19 multianno.csv xx.txt done grep ab 會找到結果為ab abc,...

讀取csv檔案時,發現內容文字中也帶有逗號?!

近日參加2019中國高校計算機大賽大資料挑戰賽時,在讀取檔案時就吃了虧。發現文字資料中也有逗號,導致讀取內容亂七八糟。後經思考找到解決方案 由於原資料文字中包含逗號,會導致在讀取資料時發生錯誤,將原本屬於text的誤進行分割。可以在excel中查詢所有的逗號,然後替換成其他符號。附 panda刪除空...

21 4 例項 讀取目錄下指定型別的檔案的內容

21.4 例項 讀取目錄下指定型別的檔案的內容 例項21 1 實現了讀取指定目錄下的 指定檔案型別的 所有檔案的內容,並在控制台中顯示讀取的內容。具體實現步驟如下 1 開啟visual studio 2008整合開發環境,並建立名稱為 sample 21 的控制台應用程式。該應用程式的版本為.net...