python使用正则匹配中文

由于这几天要给某人写爬虫程序来抓取一些公司信息到本地,有些网站内容页的标签不全,使用BeautifulSoup模块来抓取的话难度很大,如果能够解决用正则来匹配中文的话就简单多了,找了下相关资料果然有解决办法,贴出来分享给大家
使用python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用将输入的utf-8中文解密为unicode,然后交由python处理.
unicode中中文的编码为/u4e00-/u9fa5,因此正则表达式u”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符

>>> import re
 
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>> print s
中文:123456aa哈哈哈bbcc
 
>>> re.match(u"[\u4e00-\u9fa5]+",s)
<_sre.SRE_Match object at 0xb77742c0>
 
>>> pat='中文'.decode("utf8")
>>> re.search(pat,s)
<_sre.SRE_Match object at 0x16a16df0>
 
>>> newpat='这里是中文内容'.decode("utf8")
 
>>> news=re.sub(pat,newpat,s)
>>> print news
这里是中文内容:123456aa哈哈哈bbcc

下面是我用BeautifulSoup模块时使用中文来匹配的程序段

# -*- coding: utf-8 -*- 
import sys
reload(sys)   
sys.setdefaultencoding('utf-8')
####在程序的头部要加上上面几行

strusername=u'联系人'.decode('utf-8')
straddress=u'地   址'.decode('utf-8')
for p in company.findAll('p'):
        p=u''.join(str(p).decode('utf-8'))
        if p.find(strusername)>0:
            thep=p.replace('<p>','').replace('</p>','')
            username=thep

python使用正则匹配中文》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注