亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python自然語言編碼轉(zhuǎn)換模塊codecs介紹

 更新時間:2015年04月08日 11:21:41   投稿:junjie  
這篇文章主要介紹了python自然語言編碼轉(zhuǎn)換模塊codecs介紹,codecs專門用作編碼轉(zhuǎn)換,通過它的接口是可以擴(kuò)展到其他關(guān)于代碼方面的轉(zhuǎn)換,需要的朋友可以參考下

python對多國語言的處理是支持的很好的,它可以處理現(xiàn)在任意編碼的字符,這里深入的研究一下python對多種不同語言的處理。

有一點(diǎn)需要清楚的是,當(dāng)python要做編碼轉(zhuǎn)換的時候,會借助于內(nèi)部的編碼,轉(zhuǎn)換過程是這樣的:

復(fù)制代碼 代碼如下:

原有編碼 -> 內(nèi)部編碼 -> 目的編碼

python的內(nèi)部是使用unicode來處理的,但是unicode的使用需要考慮的是它的編碼格式有兩種,一是UCS-2,它一共有65536個碼位,另一種是UCS-4,它有2147483648g個碼位。對于這兩種格式,python都是支持的,這個是在編譯時通過--enable-unicode=ucs2或--enable-unicode=ucs4來指定的。那么我們自己默認(rèn)安裝的python有的什么編碼怎么來確定呢?有一個辦法,就是通過sys.maxunicode的值來判斷:
復(fù)制代碼 代碼如下:

import sys
print sys.maxunicode

如果輸出的值為65535,那么就是UCS-2,如果輸出是1114111就是UCS-4編碼。
我們要認(rèn)識到一點(diǎn):當(dāng)一個字符串轉(zhuǎn)換為內(nèi)部編碼后,它就不是str類型了!它是unicode類型:

復(fù)制代碼 代碼如下:

a = "風(fēng)卷殘云"
print type(a)
b = a.unicode(a, "gb2312")
print type(b)

輸出:
復(fù)制代碼 代碼如下:

<type 'str'>
<type 'unicode'>

這個時候b可以方便的任意轉(zhuǎn)換為其他編碼,比如轉(zhuǎn)換為utf-8:
復(fù)制代碼 代碼如下:

c = b.encode("utf-8")
print c

c輸出的東西看起來是亂碼,那就對了,因?yàn)槭莡tf-8的字符串。

好了,該說說codecs模塊了,它和我上面說的概念是密切相關(guān)的。codecs專門用作編碼轉(zhuǎn)換,當(dāng)然,其實(shí)通過它的接口是可以擴(kuò)展到其他關(guān)于代碼方面的轉(zhuǎn)換的,這個東西這里不涉及。

復(fù)制代碼 代碼如下:

#-*- encoding: gb2312 -*-
import codecs, sys

print '-'*60
# 創(chuàng)建gb2312編碼器
look  = codecs.lookup("gb2312")
# 創(chuàng)建utf-8編碼器
look2 = codecs.lookup("utf-8")

a = "我愛北京天安門"

print len(a), a
# 把a(bǔ)編碼為內(nèi)部的unicode, 但為什么方法名為decode呢,我的理解是把gb2312的字符串解碼為unicode
b = look.decode(a)
# 返回的b[0]是數(shù)據(jù),b[1]是長度,這個時候的類型是unicode了
print b[1], b[0], type(b[0])
# 把內(nèi)部編碼的unicode轉(zhuǎn)換為gb2312編碼的字符串,encode方法會返回一個字符串類型
b2 = look.encode(b[0])
# 發(fā)現(xiàn)不一樣的地方了吧?轉(zhuǎn)換回來之后,字符串長度由14變?yōu)榱?! 現(xiàn)在的返回的長度才是真正的字?jǐn)?shù),原來的是字節(jié)數(shù)
print b2[1], b2[0], type(b2[0])
# 雖然上面返回了字?jǐn)?shù),但并不意味著用len求b2[0]的長度就是7了,仍然還是14,僅僅是codecs.encode會統(tǒng)計字?jǐn)?shù)
print len(b2[0])

上面的代碼就是codecs的使用,是最常見的用法。另外還有一個問題就是,如果我們處理的文件里的字符編碼是其他類型的呢?這個讀取進(jìn)行做處理也需要特殊的處理的。codecs也提供了方法.

復(fù)制代碼 代碼如下:

#-*- encoding: gb2312 -*-
import codecs, sys

# 用codecs提供的open方法來指定打開的文件的語言編碼,它會在讀取的時候自動轉(zhuǎn)換為內(nèi)部unicode
bfile = codecs.open("dddd.txt", 'r', "big5")
#bfile = open("dddd.txt", 'r')

ss = bfile.read()
bfile.close()
# 輸出,這個時候看到的就是轉(zhuǎn)換后的結(jié)果。如果使用語言內(nèi)建的open函數(shù)來打開文件,這里看到的必定是亂碼
print ss, type(ss)


上面這個處理big5的,可以去找段big5編碼的文件試試。

相關(guān)文章

  • pyside+pyqt實(shí)現(xiàn)鼠標(biāo)右鍵菜單功能

    pyside+pyqt實(shí)現(xiàn)鼠標(biāo)右鍵菜單功能

    這篇文章主要為大家詳細(xì)介紹了pyside+pyqt實(shí)現(xiàn)鼠標(biāo)右鍵菜單功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 基于python實(shí)現(xiàn)藍(lán)牙通信代碼實(shí)例

    基于python實(shí)現(xiàn)藍(lán)牙通信代碼實(shí)例

    這篇文章主要介紹了基于python實(shí)現(xiàn)藍(lán)牙通信代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • pytorch實(shí)現(xiàn)查看當(dāng)前學(xué)習(xí)率

    pytorch實(shí)現(xiàn)查看當(dāng)前學(xué)習(xí)率

    這篇文章主要介紹了pytorch實(shí)現(xiàn)查看當(dāng)前學(xué)習(xí)率,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python實(shí)現(xiàn)新浪博客備份的方法

    Python實(shí)現(xiàn)新浪博客備份的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)新浪博客備份的方法,涉及Python正則操作,字符串操作及文本操作的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04
  • Python-OpenCV中的cv2.inpaint()函數(shù)的使用

    Python-OpenCV中的cv2.inpaint()函數(shù)的使用

    大多數(shù)人會在家里放一些舊的退化照片,上面有一些黑點(diǎn),一些筆畫等。你有沒有想過恢復(fù)它?本文就來介紹一下方法,感興趣的可以了解一下
    2021-06-06
  • python操作MySQL 模擬簡單銀行轉(zhuǎn)賬操作

    python操作MySQL 模擬簡單銀行轉(zhuǎn)賬操作

    這篇文章主要介紹了python操作MySQL 模擬簡單銀行轉(zhuǎn)賬操作,需要的朋友可以參考下
    2017-09-09
  • Python實(shí)現(xiàn)一個簡單三層神經(jīng)網(wǎng)絡(luò)的搭建及測試 代碼解析

    Python實(shí)現(xiàn)一個簡單三層神經(jīng)網(wǎng)絡(luò)的搭建及測試 代碼解析

    一個完整的神經(jīng)網(wǎng)絡(luò)一般由三層構(gòu)成:輸入層,隱藏層(可以有多層)和輸出層。本文所構(gòu)建的神經(jīng)網(wǎng)絡(luò)隱藏層只有一層。一個神經(jīng)網(wǎng)絡(luò)主要由三部分構(gòu)成(代碼結(jié)構(gòu)上):初始化,訓(xùn)練,和預(yù)測。,需要的朋友可以參考下面文章內(nèi)容的具體內(nèi)容
    2021-09-09
  • python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn)

    python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn)

    在Python中,getattr和getattribute是用于動態(tài)屬性訪問和自定義屬性訪問行為的重要工具,本文主要介紹了python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Tensorflow使用Anaconda、pycharm安裝記錄

    Tensorflow使用Anaconda、pycharm安裝記錄

    這篇文章主要介紹了Tensorflow使用Anaconda、pycharm安裝記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python dlib人臉識別代碼實(shí)例

    python dlib人臉識別代碼實(shí)例

    這篇文章主要介紹了python dlib人臉識別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論