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

解決python2中unicode()函數(shù)在python3中報(bào)錯(cuò)的問(wèn)題

 更新時(shí)間:2021年05月12日 14:37:09   作者:哦摩西羅伊  
這篇文章主要介紹了在python2中unicode()函數(shù)在python3中報(bào)錯(cuò)的解決方案,希望給大家做個(gè)參考,下次出現(xiàn)這個(gè)問(wèn)題的時(shí)候,也知道如何應(yīng)對(duì)

python2中的unicode()函數(shù)在python3中會(huì)報(bào)錯(cuò):

NameError: name 'unicode' is not defined

There is no such name in Python 3, no. You are trying to run Python 2 code in Python 3. In Python 3, unicode has been renamed to str.

翻譯過(guò)來(lái)就是:Python 3中沒(méi)有這樣的名字,沒(méi)有。 您正在嘗試在Python 3中運(yùn)行Python 2代碼。在Python 3中,unicode已重命名為str。

函數(shù)轉(zhuǎn)換:unicode()到 str()為:

//python2:
unicode(nn,'utf-8')
//python3:
str(nn)

補(bǔ)充:根本解決Python2中unicode編碼問(wèn)題

Python2中編碼問(wèn)題

因?yàn)橛?jì)算機(jī)只識(shí)別01這要的二進(jìn)制,所以在計(jì)算機(jī)存儲(chǔ)我們的文件時(shí),要使用二進(jìn)制數(shù)來(lái)表示。所以編碼就是哪個(gè)二進(jìn)制數(shù)表示哪個(gè)字符:

編碼原由系統(tǒng)編碼、文件編碼與python系統(tǒng)編碼Python字符編碼python中的字典、數(shù)組轉(zhuǎn)字符串中的中文編碼

編碼原由

ASCII編碼

最早出現(xiàn)的是ASCII碼,使用8位二進(jìn)制數(shù)組合表示128種字符。因?yàn)锳SCII編碼是美國(guó)人發(fā)明的,當(dāng)初沒(méi)考慮給別的國(guó)家用,所以,它僅僅表示了所有美式英語(yǔ)的語(yǔ)言字符。但是沒(méi)有使用完。

ISO 8859-1/windows-1252

128位字符滿足了美國(guó)人的需求,但是隨之歐洲人加入互聯(lián)網(wǎng),為了滿足歐洲人的需求,8位二進(jìn)制后面還有128位。這一段編碼我們稱之?dāng)U展字符集,即ISO 8859-1編碼標(biāo)準(zhǔn),后來(lái)歐洲的需求變更,即規(guī)定了windows-1252代替了ISO 8859-1

GB2312

然后當(dāng)我國(guó)加入后,8位二進(jìn)制(即一個(gè)字節(jié))用完了,于是我們保留ASCII編碼即前128位,后面的全部刪除。因?yàn)槲覈?guó)得語(yǔ)言博大精深,所以需要2個(gè)字節(jié),即16位才能滿足我們得需求,所以當(dāng)計(jì)算機(jī)遇到大于127的字節(jié)時(shí),就一次性讀取兩個(gè)字節(jié),將他解碼成漢字。即GB2312編碼

GBK

相當(dāng)于GB2312的改進(jìn)版,增添了中文字符。但還是2個(gè)字節(jié)表示漢字

GB18030

為了滿足日韓和我國(guó)的少數(shù)民族的需求,對(duì)GBK的改進(jìn),使用變長(zhǎng)編碼,要么使用兩個(gè)字節(jié),要么使用四個(gè)字節(jié)。

Unicode

雖然每種編碼都兼容ASCII編碼,但是各個(gè)國(guó)家是不兼容的。于是出現(xiàn)了Unicode,它將所有的編碼進(jìn)行了統(tǒng)一。它不能算是一種具體的編碼標(biāo)準(zhǔn),只是將全世界的字符進(jìn)行了編號(hào),并沒(méi)有指定他們具體在計(jì)算機(jī)種以什么樣的形式存儲(chǔ)。

它的具體實(shí)現(xiàn)有UTF-8,UTF-16,UTF-32等。

系統(tǒng)編碼、文件編碼與python系統(tǒng)編碼

在linux中獲取系統(tǒng)編碼結(jié)果:

這里寫圖片描述

Windows系統(tǒng)的編碼,代碼頁(yè)936表示GBK編碼

這里寫圖片描述

可以看到linux系統(tǒng)默認(rèn)使用UTF-8編碼,windows默認(rèn)使用GBK編碼。Linux環(huán)境下,文件默認(rèn)使用UTF-8編碼。當(dāng)然你也可以指定文件編碼方式。

Python解釋器內(nèi)部默認(rèn)使用的ASCII編碼方式去解讀python源文件。

這里寫圖片描述

所以當(dāng)文件內(nèi)存在非ASCII字符時(shí),python解釋器無(wú) 法識(shí)別,就會(huì)出現(xiàn)編碼錯(cuò)誤。

這里寫圖片描述

So,這個(gè)時(shí)候需要告訴python解釋器用utf-8去解讀python源文件

這里寫圖片描述

這里寫圖片描述

Python字符編碼

Python2中有兩類字符串,分別是str與unicode。這兩類字符串都派生自抽象類basestring。 Str即普通字符串類型

這里寫圖片描述

在字符串前加上u即unicode編碼

這里寫圖片描述

在代碼中通常用到的是unicode,文件保存的是utf-8編碼。Unicode編碼是固定2個(gè)字節(jié)代表一個(gè)字符。Utf-8是對(duì)英文只用一個(gè)字節(jié),對(duì)中文是3個(gè)字節(jié)。所以u(píng)nicode運(yùn)行效率高,utf-8運(yùn)行效率相比要低,但是空間存儲(chǔ)要小。

這里寫圖片描述

Python中str與unicode轉(zhuǎn)換

Unicode轉(zhuǎn)str

這里寫圖片描述

str轉(zhuǎn)unicode

這里寫圖片描述

其函數(shù)中參數(shù)UTF-8是,以u(píng)tf-8編碼對(duì)unicode對(duì)象解碼,或編碼。

python中的字典、數(shù)組轉(zhuǎn)字符串中的中文編碼

當(dāng)字典中的中文字符是unicode類型時(shí)

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

decode(“unicode-escape”)相當(dāng)是反向編碼.然后再進(jìn)行utf-8編碼即可

當(dāng)字典中的字符串是string類型時(shí)

name = {"name": "中國(guó)"}
name = str(name)
print name.decode("string-escape")

這里寫圖片描述

當(dāng)數(shù)組進(jìn)行字符串化時(shí)

這里寫圖片描述

最后總結(jié)

不管是數(shù)組還是字典,在進(jìn)行字符串轉(zhuǎn)換是,即是又一次編碼,所以,對(duì)于本身還有的中文字符串又一次編碼,所以要進(jìn)行一次反編碼,才能看到原有的編碼。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • python 獲取文件列表(或是目錄例表)

    python 獲取文件列表(或是目錄例表)

    在python的應(yīng)用過(guò)程中,經(jīng)常會(huì)用到獲取文件列表的方法,常規(guī)的做法是這樣的
    2009-03-03
  • Pandas實(shí)現(xiàn)在線文件和剪貼板數(shù)據(jù)讀取詳解

    Pandas實(shí)現(xiàn)在線文件和剪貼板數(shù)據(jù)讀取詳解

    這篇文章主要為大家介紹的是Pandas兩種少用的讀取文件方式:讀取在線文件的數(shù)據(jù)和讀取剪貼板的數(shù)據(jù),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • Python進(jìn)階學(xué)習(xí)之特殊方法實(shí)例詳析

    Python進(jìn)階學(xué)習(xí)之特殊方法實(shí)例詳析

    一般說(shuō)來(lái),特殊的方法都被用來(lái)模仿某個(gè)行為。下面這篇文章主要給大家介紹了關(guān)于Python進(jìn)階學(xué)習(xí)之特殊方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看吧。
    2017-12-12
  • Python之requests的使用(二)

    Python之requests的使用(二)

    上一篇我們說(shuō)了requests的簡(jiǎn)單用法,知道了如何發(fā)送請(qǐng)求,今天我們更深層次的來(lái)學(xué)習(xí)requests。我們看看高級(jí)一點(diǎn)的操作,比如講文件上傳,cookies設(shè)置,代理設(shè)置之類的。感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • Python3?Loguru輸出日志工具的使用

    Python3?Loguru輸出日志工具的使用

    使用 Python 來(lái)寫程序或者腳本的話,常常遇到的問(wèn)題就是需要對(duì)日志進(jìn)行刪除。一方面可以幫助我們?cè)诔绦虺鰡?wèn)題的時(shí)候排除問(wèn)題,二來(lái)可以幫助我們記錄需要關(guān)注的信息,這篇文章主要介紹了Python3?Loguru?相見(jiàn)恨晚的輸出日志工具,需要的朋友可以參考下
    2022-05-05
  • Python list操作用法總結(jié)

    Python list操作用法總結(jié)

    這篇文章主要介紹了Python list操作用法,以實(shí)例形式較為詳細(xì)的總結(jié)分析了Python中l(wèi)ist的各種常見(jiàn)函數(shù)的功能與使用方法,需要的朋友可以參考下
    2015-11-11
  • python爬蟲之爬取谷歌趨勢(shì)數(shù)據(jù)

    python爬蟲之爬取谷歌趨勢(shì)數(shù)據(jù)

    這篇文章主要介紹了python爬蟲之爬取谷歌趨勢(shì)數(shù)據(jù),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python監(jiān)控進(jìn)程腳本

    python監(jiān)控進(jìn)程腳本

    這篇文章主要為大家詳細(xì)介紹了python監(jiān)控進(jìn)程腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 學(xué)習(xí)python處理python編碼問(wèn)題

    學(xué)習(xí)python處理python編碼問(wèn)題

    概括從python開始就處理unicode字符,python源文件的編碼與解碼,我們寫的python程序從產(chǎn)生到執(zhí)行的過(guò)程如下
    2011-03-03
  • Python中很常用的函數(shù)map()用法實(shí)例

    Python中很常用的函數(shù)map()用法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python中很常用的函數(shù)map()用法的相關(guān)資料,map()函數(shù)是Python的內(nèi)置函數(shù),會(huì)根據(jù)提供的函數(shù)參數(shù),對(duì)傳入的序列數(shù)據(jù)進(jìn)行映射,需要的朋友可以參考下
    2023-10-10

最新評(píng)論