用python檢索漢字的坑點
阿新 • • 發佈:2019-02-05
因為工作需要,寫一個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')