python正则表达式匹配中文-[转] Python中的正则表达式匹配中文问题

http://blog.csdn.net/dao123mao/article/details/5408521

python中正则表达式匹配中文是没有问题的,但是其中有一个关键点,那就是pattern中的中文编码必须和要匹配字符串保持一致;下面使用一个例子来说明:

# -*- coding: utf-8 -*-

"""

test.html内容为 :

作  者: (美)埃克尔 著,陈昊鹏 译

出 版 社: 机械工业出版社

出版时间: 2007-6-1

字  数:

版  次: 1

页  数: 880

印刷时间: 2007-6-1

开  本:

印  次:

纸  张: 胶版纸

I S B N : 9787111213826

包  装: 平装

"""

import re

import chardet #用于检测str的编码

#读文件

def readContent():

f = file(r"/home/fzhong/test.html","r")

content = f.read()

f.close()

return content

#检测str的编码

def checkEncoding(str):

return chardet.detect(str)["encoding"]

def extractAttrValue(regx):

p = re.compile(regx)

attrValue = p.search(self.dataStr).group(1).strip()

return attrValue

if __name__ == "__main__":

content = readContent()

#因为这里的test.html为gb2312编码,所以这里encoding应该为gb2312

encoding = checkEncoding(content)

p_isbn = u"

I S B N :(.*?)".encode(encoding )

isbn = extractAttrValue(p_isbn)

#pattern为unicode,转为和content一样的编码,然后执行匹配

p_pub_date = u"

出版时间:(.*)".encode(encoding )

pubDate = extractAttrValue(p_pub_date)

p_edition_num = u"

版  次:(.*?)".encode(encoding )

editionNum = extractAttrValue(p_edition_num)

p_page_num = u"

页  数:(.*?)".encode(encoding )

pageNum = extractAttrValue(p_page_num)

p_author = ur"作  者:(.*?)

".encode(encoding )

author = extractAttrValue(p_author)

p_publisher = ur"出 版 社:(.*?)".encode(encoding )

publisher = extractAttrValue(p_publisher)

这里有几个关键点:

p_pub_date = u"

出版时间:(.*)".encode(encoding )

执行一个unicode到encoding编码的转换;

当然在上面的脚本中也可以这样:

p_pub_date = "

出版时间:(.*)".decode("UTF-8").encode(encoding )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值