python中使用正則表達匹配指定的中文字元

2021-09-27 12:05:43 字數 1010 閱讀 8843

目前還在python爬蟲的學習中,遇到了對爬取的網頁原始碼無法匹配其中的中文的問題,今天把解決方法給總結了一下:

response = urllib2.urlopen(request, context = context)

data = response.read()

在這裡獲取的網頁原始碼如果直接用正則進行匹配是查詢不到中文字元的,需要加上下面一句,將字元編碼轉換為unicode編碼

data = unicode(data, "gb2312")
之後再進行中文字元的匹配就可以查詢到指定的字元了

restr = ur"工作職責"

regex = re.compile(restr, re.ignorecase)

list = regex.findall(data)

print list[0]

結果就可以查詢到「工作職責」這幾個中文字元了。

關於為什麼寫了這個就可以了,原因如下:

首先先了解一下python中文的編碼環境問題:

1.python檔案預設的編碼格式是ascii ,無法識別漢字,因為ascii碼中沒有中文。

2.所以py檔案中要寫中文字元時,一般在開頭加 # -- coding: utf-8 -- 或者 #coding=utf-8。

這是指定一種編碼格式,意味著用該編碼儲存中文字元(也可以是gbk、gb2312等)。

簡單來說就是:編碼意味著 unicode -> ch-str,解碼意味著 ch-str -> unicode,

因此我們可以通過chardet檢視爬取網頁的原始碼編碼格式是什麼,接著再使用對應的編碼將其unicode,然後才可以進行中文的正則匹配。

注意:1.由於我上面的網頁原始碼是「gb2312」編碼,因此我使用unicode(data,「gb2312」)

2 .關於python的chardet這個模組,功能主要是檢測傳入資料的編碼格式,具體的細節可以自行查閱相關資料

Python中使用正規表示式

python unix與linux系統管理指南 學習筆記 python中使用正規表示式,應該要養成建立編譯後的正規表示式的習慣,使用方法如下 usr bin env python import re def run re pattern error re obj re.compile pattern...

Python中使用正規表示式

本文通過示例來描述如何在python中使用正規表示式來統計文字中的所有數字。示例中的文字來自命令列的管道資料,sys.stdin.readlines 主要是因為作者需要在命令列的輸出資訊中做數字統計。示例 1,列出根目錄下所有檔案或資料夾的名稱字串中包含的數字 import re for name ...

Python中使用正規表示式

本文通過示例來描述如何在python中使用正規表示式來統計文字中的所有數字。示例中的文字來自命令列的管道資料,python view plain copy sys.stdin.readlines 主要是因為作者需要在命令列的輸出資訊中做數字統計。示例 1,列出根目錄下所有檔案或資料夾的名稱字串中包含...