欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3如何解決字符編碼問題詳解

 更新時間:2017年04月23日 08:44:41   作者:FOOFISH  
字符串是一種數(shù)據(jù)類型,但是,字符串比較特殊的是還有一個編碼問題。下面這篇文章主要給大家介紹了關于Python3如何解決字符編碼問題的相關資料,文中介紹的還是相對比較詳細的,需要的朋友可以參考借鑒,下面來一起看看吧。

編碼

因為計算機只能處理數(shù)字,如果要處理文本,就必須先把文本轉換為數(shù)字才能處理。最早的計算機在設計時采用8個比特(bit)作為一個字節(jié)(byte),所以,一個字節(jié)能表示的最大的整數(shù)就是255(二進制11111111=十進制255),如果要表示更大的整數(shù),就必須用更多的字節(jié)。比如兩個字節(jié)可以表示的最大整數(shù)是65535,4個字節(jié)可以表示的最大整數(shù)是4294967295。

由于計算機是美國人發(fā)明的,因此,最早只有127個字母被編碼到計算機里,也就是大小寫英文字母、數(shù)字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。

Python3字符編碼

Python3 最重要的一項改進之一就是解決了 Python2 中字符串與字符編碼遺留下來的這個大坑。

Python2 字符串設計上的一些缺陷:

  • 使用 ASCII 碼作為默認編碼方式,對中文處理很不友好。
  • 把字符串的牽強地分為 unicode 和 str 兩種類型,誤導開發(fā)者

當然這并不算 Bug,只要處理的時候多留心也可以避免這些坑。但在 Python3 兩個問題都很好的解決了。

首先,Python3 把系統(tǒng)默認編碼設置為 UTF-8

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>>

然后,文本字符和二進制數(shù)據(jù)區(qū)分得更清晰,分別用 str 和 bytes 表示。文本字符全部用 str 類型表示,str 能表示 Unicode 字符集中所有字符,而二進制字節(jié)數(shù)據(jù)用一種全新的數(shù)據(jù)類型,用 bytes 來表示。

str

>>> a = "a"
>>> a
'a'
>>> type(a)
<class 'str'>

>>> b = "禪"
>>> b
'禪'
>>> type(b)
<class 'str'>

bytes

Python3 中,在字符引號前加‘b',明確表示這是一個 bytes 類型的對象,實際上它就是一組二進制字節(jié)序列組成的數(shù)據(jù),bytes 類型可以是 ASCII范圍內的字符和其它十六進制形式的字符數(shù)據(jù),但不能用中文等非ASCII字符表示。

>>> c = b'a'
>>> c
b'a'
>>> type(c)
<class 'bytes'>

>>> d = b'\xe7\xa6\x85'
>>> d
b'\xe7\xa6\x85'
>>> type(d)
<class 'bytes'>
>>>

>>> e = b'禪'
 File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.

bytes 類型提供的操作和 str 一樣,支持分片、索引、基本數(shù)值運算等操作。但是 str 與 bytes 類型的數(shù)據(jù)不能執(zhí)行 + 操作,盡管在py2中是可行的。

>>> b"a"+b"c"
b'ac'
>>> b"a"*2
b'aa'
>>> b"abcdef\xd6"[1:]
b'bcdef\xd6'
>>> b"abcdef\xd6"[-1]
214

>>> b"a" + "b"
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str

python2 與 python3 字節(jié)與字符的對應關系

python2 python3 表現(xiàn) 轉換 作用
str bytes 字節(jié) encode 存儲
unicode str 字符 decode 顯示

encode 與 decode

str 與 bytes 之間的轉換可以用 encode 和從decode 方法。

encode 負責字符到字節(jié)的編碼轉換。默認使用 UTF-8 編碼準換。

>>> s = "Python之禪"
>>> s.encode()
b'Python\xe4\xb9\x8b\xe7\xa6\x85'
>>> s.encode("gbk")
b'Python\xd6\xae\xec\xf8'

decode 負責字節(jié)到字符的解碼轉換,通用使用 UTF-8 編碼格式進行轉換。

>>> b'Python\xe4\xb9\x8b\xe7\xa6\x85'.decode()
'Python之禪'
>>> b'Python\xd6\xae\xec\xf8'.decode("gbk")
'Python之禪'

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • Python如何利用pandas讀取csv數(shù)據(jù)并繪圖

    Python如何利用pandas讀取csv數(shù)據(jù)并繪圖

    這篇文章主要介紹了Python如何利用pandas讀取csv數(shù)據(jù)并繪圖,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 如何通過python的fabric包完成代碼上傳部署

    如何通過python的fabric包完成代碼上傳部署

    這篇文章主要介紹了如何通過python的fabric包完成代碼上傳部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python Web flask 視圖內容和模板實現(xiàn)代碼

    python Web flask 視圖內容和模板實現(xiàn)代碼

    這篇文章主要介紹了python Web flask 視圖內容和模板實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 使用PDB模式調試Python程序介紹

    使用PDB模式調試Python程序介紹

    這篇文章主要介紹了使用PDB模式調試Python程序介紹,本文講解了PDB模式的使用語法,著重講解PDB模式下的常用命令,需要的朋友可以參考下
    2015-04-04
  • Python3模擬curl發(fā)送post請求操作示例

    Python3模擬curl發(fā)送post請求操作示例

    這篇文章主要介紹了Python3模擬curl發(fā)送post請求操作,結合實例形式分析了Python3使用Request請求模擬curl發(fā)送post相關操作技巧,需要的朋友可以參考下
    2019-05-05
  • 基于Python實現(xiàn)語音合成小工具

    基于Python實現(xiàn)語音合成小工具

    TTS(Text To Speech)是一種語音合成技術,可以讓機器將輸入文本以語音的方式播放出來,實現(xiàn)機器說話的效果。本文將使用pyttsx3庫作為示范,編寫一個語音合成小工具,感興趣的可以了解一下
    2022-12-12
  • mac安裝python3后使用pip和pip3的區(qū)別說明

    mac安裝python3后使用pip和pip3的區(qū)別說明

    這篇文章主要介紹了mac安裝python3后使用pip和pip3的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • python基于phantomjs實現(xiàn)導入圖片

    python基于phantomjs實現(xiàn)導入圖片

    這篇文章主要介紹了python基于phantomjs實現(xiàn)導入圖片的相關資料,需要的朋友可以參考下
    2016-05-05
  • Python數(shù)據(jù)挖掘中常用的五種AutoEDA 工具總結

    Python數(shù)據(jù)挖掘中常用的五種AutoEDA 工具總結

    大家好,我們都知道在數(shù)據(jù)挖掘的過程中,數(shù)據(jù)探索性分析一直是非常耗時的一個環(huán)節(jié),但也是繞不開的一個環(huán)節(jié),本篇文章帶你盤點數(shù)據(jù)挖掘中常見的5種 AutoEDA 工具
    2021-11-11
  • 淺談Python xlwings 讀取Excel文件的正確姿勢

    淺談Python xlwings 讀取Excel文件的正確姿勢

    這篇文章主要介紹了淺談Python xlwings 讀取Excel文件的正確姿勢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02

最新評論