Python實現將Unicode轉換為ASCII
通過本文,我們將學習如何將 Unicode 編碼為字節(jié),了解系統(tǒng)編碼的不同方法以及在 Python 中將 Unicode 轉換為 ASCII。
在 Python 中將 Unicode 轉換為 ASCII
Python 3 字符串的基本問題是由字符組成的; Python 中沒有字符類型,但它們包含 Unicode 字符。
如果我們說 a = ‘abcd’ 并使用 len() 函數檢查它的長度,那么我們得到 4 并且我們聲明 s=‘????’ 意思是你好,這是希伯來語中的單詞。 這些長度是相同的,這很好,因為兩個變量都有四個字符。
>>a='abcd' >>len(a) 4 >>s='????' >>len(s) 4
事實上,幕后是不同的字節(jié)數與這里的問題無關,len() 測量的是字符數,而不是字節(jié)數,但當然,在幕后,UTF-8 Unicode 字符和 UTF-8 編碼使用更多字節(jié)。
那么我們如何將字符串轉換為我們需要的字節(jié)呢? 好吧,我們可以使用 s.encode(),如果我們這樣做,它會返回一個字節(jié)字符串,該字符串將是我們創(chuàng)建希伯來語單詞 ???? 所需的八個字節(jié)。
>>s.encode() b'\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d' >>'abcd'.encode() b'abcd'
現在我們將獲取一個 Unicode 字符串并將其轉換為字節(jié)字符串,但它比這更復雜,因為我們知道這個字符串是什么,并且我們想要取回不代表 Unicode 底層字節(jié)的字節(jié)。 我們想要取回不同編碼系統(tǒng)的底層字節(jié)。
例如,我們使用 iso-8859-8,這是您可能聽說過的一種在西歐廣泛使用的編碼類型,它允許我們在一個字節(jié)中包含特定語言所需的所有不同字符 ,所以如果我們需要將一個字符串轉換為非 Unicode 的編碼。
>>s.encode('iso-8859-8') b'\xf9\xec\xe5\xed'
讓我們看看如果我們有來自不同語言的東西會發(fā)生什么,就像我們說 s='北京' 就是北京,如果我們對其進行編碼,那么我們會得到一個字節(jié)字符串。
我們看到這里有六個字節(jié),因為每個漢字都由三個字節(jié)表示; 這是我們使用 UTF-8 進行的可變長度編碼。
>>s='北京' >>s.encode() b'\xe5\x8c\x97\xe4\xba\xac'
現在我們想使用 iso-8859-8 對 北京 進行編碼,當我們執(zhí)行此操作時,我們會得到 UnicodeEncodeError,這意味著編碼告訴我們您想要獲取這些 Unicode 字符并將它們轉換為 iso-8859 的字節(jié) -8 不允許的編碼。
s.encode('iso-8859-8')
如果我們用這個連接英語單詞,它也會失敗,因為任何地方我們可能有錯誤,它都會失敗,但我們可以添加一個參數來幫助忽略錯誤。
>>s='I often go to 北京' >>s.encode('iso-8859-8',errors='ignore') b'I often go to '
如果您有一大堆文本并且可以丟失 Unicode 字符,則可以使用此選項。
讓我們看一下默認情況下等于 strict 的 help(s.encode),但它可以是一些不同的東西,所以如果我們使用替換值來錯誤,它并不真正知道如何替換,所以它 只是要使用問號。
help(s.encode)
>>s='I often go to 北京' >>s.encode('iso-8859-8',errors='replace') b'I often go to ??'
當我們使用 xmlcharrefreplace 時,我們會返回與這些 Unicode 字符有關的 XML 實體,因此如果您要將其粘貼到 XML 文檔或 HTML 中,那么這將起作用。
>>s.encode('iso-8859-8',errors='xmlcharrefreplace') b'I often go to 北京'
這取決于您的需求; 如果您將 Unicode 字符轉換為字節(jié),這是典型的情況,因為您將通過網絡發(fā)送它們,或者您正在處理某種其他類型的編碼系統(tǒng)。
如果您是初學者并且不想詳細介紹,請使用以下命令安裝名為 unidecode 的 Python 包。
它將直接將 Unicode 轉換為 ASCII; 當您使用需要將 Unicode 轉換為 ASCII 的應用程序時,它會很有幫助。
>>pip install unidecode >>>from unidecode import unidecode >>>unidecode(u'北京') 'Bei Jing'
到此這篇關于Python實現將Unicode轉換為ASCII的文章就介紹到這了,更多相關Python Unicode轉ASCII內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
這篇文章主要介紹了在Mac OS上部署Nginx和FastCGI以及Flask框架的教程,Flask是Python下一個極簡的web開放框架,需要的朋友可以參考下2015-05-05selenium學習教程之定位以及切換frame(iframe)
這篇文章主要給大家介紹了關于selenium學習教程之定位以及切換frame(iframe)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01