1. 程式人生 > >用python檢索漢字的坑點

用python檢索漢字的坑點

因為工作需要,寫一個python指令碼,檢索檔案中的所有漢字,遇到了一點坑

檢索一類特徵的東西當然需要用正則表示式了,python中的re

先看原始程式碼,python版本2.7

#!/sr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import re

def searchword(path):
    f = open(path)
    lines = f.readlines()
    pattern = re.compile(u"[\u4e00-\u9fa5]+")
    for line in lines:
        line.decode('utf8')
        results = re.findall(pattern, line)
        for str in results:
            print str
    f.close()

按照網上的林林總總,這樣寫看著沒有什麼問題,但是測試通不過,檢索不出漢字

為什麼呢?

先是想編碼問題,可是已經

line.decode('utf8') utf8編碼了呀,應該沒問題才對,為了測試,加了一句程式碼
line.decode('utf8')
print isinstance(line, unicode) 

結果為False, 所以顯然字串編碼非unicode,具體原因還未知,python也是即用即查的,後續認真探索一下

line.decode('utf8')  ----->  line = unicode(line, 'utf-8')程式碼替換城這個,發現編碼為unicode了,檢索也好使了,暫且記錄一下,原因待查


line.decode('utf8')