Python 字元編碼方法

2021-06-19 10:14:42 字數 1601 閱讀 4917

ascii標準在美國建立,並且定義了大多數美國程式設計師使用的文字字串表示法。ascii定義了從0到127的字元**,並且允許每個字元儲存在乙個8位的位元組中(實際上,只

有其中的7位真正用到)。例如,ascii標準把字元'a'對映為整數值97(十六進製制中的0x61),它儲存在記憶體和檔案的乙個單個位元組中。如果想要看到這是如何工作的,

python的內建函式ord給出了乙個字元的二進位制值,並且chr針對乙個給定的整數**值

返回其字元:

>>> ord('a')

# 'a' is a byte with binary value 97 in ascii

97>>> hex(97)

'0x61'

>>> chr(97)

# binary value 97 stands for character 'a'

'a'編碼是根據乙個想要的編碼名稱,把乙個字串翻譯為其原始位元組形式

解碼是根據其編碼名稱,把乙個原始位元組串翻譯為字串形式的過程

更程式化地說,位元組和字串之間的來回轉換!

ascii是utf-8的乙個7位的子集

對於所有小於128的字元**,utf-8編碼與ascii是二進位制相容的

但是,所有這些,ascii、latin-1、utf-8以及很多其他的編碼,都被認為是unicode。

unicode可以理解為一種規範。

python的字串型別

具體來說,python語言提供了字串型別在指令碼中表示字元文字。在指令碼中所使用的字

符串型別取決於所使用的python的版本。python 2.x有一種通用的字串型別來表示二進

制資料和像ascii這樣的8位文字,還有一種特定的型別用來表示多位元組unicode文字:

str表示8位文字和二進位制資料。

unicode用來表示寬字元unicode文字。

python 2.x的兩種字串型別是不同的(unicode考慮到字元的額外大小並且支援編碼和

解碼),但是,它們的操作集大多是重疊的。python 2.x中的str字串型別用於可以用8

位位元組表示的文字,以及絕對位元組值所表示的二進位制資料。

相反,python 3.x帶有3種字串物件型別——一種用於文字資料,兩種用於二進位制數

據:str表示unicode文字(8位的和更寬的)。

bytes表示二進位制資料。

bytearray,是一種可變的bytes型別。

python 3.0中所有3種字串型別都支援類似的操作集,但是,它們都有不同的角色。

python 3.x之後關於這一修改的主要目標是,把python 2.x中常規的和unicode字串

型別合併到乙個單獨的字串型別中,以支援常規的和unicode文字:開發者想要刪除

python 2.x中的字串區分,並且讓unicode的處理更加自然。假設ascii和其他的8位文

本真的是一種簡單的unicode,這種融合聽起來很符合邏輯

在python2.6中,我們可以對簡單的文字使用str並且對文字的更高階的形式使用二進位制資料和

unicode;在python 3.0中,我們將針對任何型別的文字(簡單的和unicode)使用str,

並且針對二進位制資料使用bytes或bytearray。

沙皮狗丁編碼方法

這是乙個突如其來的拍腦袋的想法,源於這兩天看codeigniter源 的時候那個又長又臭的配置檔案,相信經常用開源軟體的朋友都見識過他們的配置檔案,常常都是幾百上千行的 apache的httpd.conf就有差不多1000行 而實際起作用的,卻只不過是十幾行。於是乙個拍腦袋的想法就出來了 為什麼不把...

特徵編碼方法 OneHotEncoding

對於一些特徵工程方面,有時會用到labelencoder和onehotencoder。一 為什麼需要這種編碼方式 在實際的機器學習的應用任務中,特徵有時候並不總是連續值,有可能是一些分類值,如性別可分為 male 和 female 如果我們用簡單的0,1代替就會有問題,因為男女之間不存在大小關係。二...

狀態機狀態編碼方法

常用的編碼有三種 二進位制編碼 gray碼 one hot編碼。另外,還可以自定義編碼,比如在高速設計中以狀態編碼作為輸出。一 二進位制編碼 順序二進位制編碼,即將狀態依次編碼為順序的二進位制數。順序二進位制編碼是最緊密的編碼,優點在於它使用的狀態向量位數最少。例如對於6 個狀態的狀態機,只需要 3...