python對多國語言的處理是支援的很好的,它可以處理現在任意編碼的字元,這裡深入的研究一下python對多種不同語言的處理。 有一點需要清楚的是,當python要做編碼轉換的時候,會借助於內部的編碼,轉換過程是這樣的: 原有編碼 -> 內部編碼 -> 目的編碼 python的內部是使用unicode來處理的,但是unicode的使用需要考慮的是它的編碼格式有兩種,一是ucs-2,它一共有65536個碼位,另一種是ucs-4,它有2147483648g個碼位。對於這兩種格式,python都是支援的,這個是在編譯時通過--enable-unicode=ucs2或--enable-unicode=ucs4來指定的。那麼我們自己預設安裝的python有的什麼編碼怎麼來確定呢?有乙個辦法,就是通過sys.maxunicode的值來判斷:
sysprint
sys.maxunicode
如果輸出的值為65535,那麼就是ucs-2,如果輸出是1114111就是ucs-4編碼。 我們要認識到一點:當乙個字串轉換為內部編碼後,它就不是str型別了!它是unicode型別:
a ="
風捲殘雲
type(a)b
=a.unicode(a,
"gb2312
type(b)
輸出:
這個時候b可以方便的任意轉換為其他編碼,比如轉換為utf-8:
c =b.encode(
"utf-8
")printc
c輸出的東西看起來是亂碼,那就對了,因為是utf-8的字串。 好了,該說說codecs模組了,它和我上面說的概念是密切相關的。codecs專門用作編碼轉換,當然,其實通過它的介面是可以擴充套件到其他關於**方面的轉換的,這個東西這裡不涉及。
#-*- encoding: gb2312 -*-
import
codecs, sys
print'-
'*60#
建立gb2312編碼器
look
=codecs.lookup(
"gb2312")
#建立utf-8編碼器
look2
=codecs.lookup(
"utf-8")
a ="我愛北京天安門
len(a), a
#把a編碼為內部的unicode, 但為什麼方法名為decode呢,我的理解是把gb2312的字串解碼為unicodeb =
look.decode(a)
#返回的b[0]是資料,b[1]是長度,這個時候的型別是unicode了
printb[1
], b[0], type(b[0])
#把內部編碼的unicode轉換為gb2312編碼的字串,encode方法會返回乙個字串型別
b2 =
look.encode(b[0])
#發現不一樣的地方了吧?轉換回來之後,字串長度由14變為了7! 現在的返回的長度才是真正的字數,原來的是位元組數
b2[1
], b2[0], type(b2[0])
#雖然上面返回了字數,但並不意味著用len求b2[0]的長度就是7了,仍然還是14,僅僅是codecs.encode會統計字數
len(b2[0])
上面的**就是codecs的使用,是最常見的用法。另外還有乙個問題就是,如果我們處理的檔案裡的字元編碼是其他型別的呢?這個讀取進行做處理也需要特殊的處理的。codecs也提供了方法.
#-*- encoding: gb2312 -*-
import
codecs, sys
#用codecs提供的open方法來指定開啟的檔案的語言編碼,它會在讀取的時候自動轉換為內部unicode
bfile
=codecs.open(
"dddd.txt",
'r',
"big5
")#bfile = open("dddd.txt", 'r')
ss =bfile.read()bfile.close()
#輸出,這個時候看到的就是轉換後的結果。如果使用語言內建的open函式來開啟檔案,這裡看到的必定是亂碼
ss, type(ss)
上面這個處理big5的,可以去找段big5編碼的檔案試試。 www.pythonid.com
《Python自然語言處理》
python自然語言處理 基本資訊 出版社 人民郵電出版社 isbn 9787115333681 出版日期 2014 年6月 開本 16開 頁碼 508 版次 1 1 所屬分類 計算機 軟體與程式設計 python 更多關於 python自然語言處理 內容簡介 書籍計算機書籍 自然語言處理 natu...
自然語言處理
自然語言處理主要步驟包括 2.詞法分析 對於英文,有詞頭 詞根 詞尾的拆分,名詞 動詞 形容詞 副詞 介詞的定性,多種詞意的選擇。比如diamond,有菱形 棒球場 鑽石3個含義,要根據應用選擇正確的意思。3.語法分析 通過語法樹或其他演算法,分析主語 謂語 賓語 定語 狀語 補語等句子元素。4.語...
自然語言處理
前言 自然語言處理 natural language processing 是計算科學領域與人工智慧領域中的乙個重要方向。它研究能實現人與計算機之間用自然語言進行有效通訊的各種理論和方法。自然語言處理是一門融語言學 電腦科學 數學於一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言...