`
djangofan
  • 浏览: 35719 次
社区版块
存档分类
最新评论

Python中的正则表达式匹配中文问题

 
阅读更多

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

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

'''

test.html内容为 :

<div id='author_' >作  者: (美)埃克尔 著,陈昊鹏 译</div>
<div id='publisher_'>出 版 社: 机械工业出版社</div>
<ul >
<li>出版时间: 2007-6-1</li>
<li>字  数: </li>
<li>版  次: 1</li>
<li>页  数: 880</li>
<li>印刷时间: 2007-6-1</li>
<li>开  本: </li>
<li>印  次: </li>
<li>纸  张: 胶版纸</li>
<li>I S B N : 9787111213826</li>
<li>包  装: 平装</li>
</ul>

'''

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'<li>I S B N :(.*?)</li>'.encode(encoding )
isbn = extractAttrValue(p_isbn)

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

p_pub_date = u'<li>出版时间:(.*)</li>'.encode(encoding )
pubDate = extractAttrValue(p_pub_date)

p_edition_num = u'<li>版  次:(.*?)</li>'.encode(encoding )
editionNum = extractAttrValue(p_edition_num)

p_page_num = u'<li>页  数:(.*?)</li>'.encode(encoding )
pageNum = extractAttrValue(p_page_num)

p_author = ur'作  者:(.*?)</div>'.encode(encoding )
author = extractAttrValue(p_author)

p_publisher = ur'出 版 社:(.*?)</div>'.encode(encoding )

publisher = extractAttrValue(p_publisher)

 

这里有几个关键点:

p_pub_date = u'<li>出版时间:(.*)</li>'.encode(encoding )

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

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

p_pub_date = '<li>出版时间:(.*)</li>'.decode('UTF-8').encode(encoding )

分享到:
评论

相关推荐

    常用java正则表达式

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...

    Python实现正则表达式匹配任意的邮箱方法

    今天小编就为大家分享一篇Python实现正则表达式匹配任意的邮箱方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Python正则表达式匹配数字和小数的方法

     以上所述是小编给大家介绍的Python正则表达式匹配数字和小数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持! 如果你觉得本文对你有...

    Python正则表达式标准库使用教程.pdf

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。   ...

    python3利用正则表达式匹配经纬度

    网上关于度分秒的经纬度提取我用不了,搞了好久的正则表达式,大家可以参考一下,如果有更好的方法,可以分享一下。

    Python使用中文正则表达式匹配指定中文字符串的方法示例

    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法。分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: ...

    python 实现正则表达式匹配

    实现支持 '.' 和 '*' 的正则表达式匹配 # '.' 匹配任意单个字符。 # '*' 匹配零个或多个前面的元素。 # 匹配应该覆盖整个字符串 (s) ,而不是部分字符串 # 说明: # s 可能为空,且只包含从 a-z 的小写字母。 # p ...

    python正则表达式_深入浅出

    python正则表达式_深入浅出

    python正则表达式.zip

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这 些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一 种过滤逻辑(可以用来做检索,截取或者替换...

    “正则表达式以及python re模块”演讲PPT

    PPT 讲述了正则表达式的使用方式以及如何使用python来操作正则表达式,内容简洁实用,适合平时查询,也适合PPT演讲使用~

    Python正则表达式字符.xlsx

    Python正则表达式字符.xlsx

    python使用正则表达式匹配字符串开头并打印示例

    主要介绍了python使用正则表达式匹配字符串开头并打印的方法,结合实例形式分析了Python基于正则表达式操作字符串的相关技巧,需要的朋友可以参考下

    python正则表达式匹配不包含某几个字符的字符串方法

    今天小编就为大家分享一篇python正则表达式匹配不包含某几个字符的字符串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    python-数字正则表达式.docx

    python 数字正则表达式 Python数字正则表达式 正则表达式是一种强大的文本处理工具,它可以用来匹配、查找、替换文本中的特定模式。在Python中,正则表达式模块re提供了一组函数,可以用来处理字符串中的正则表达式...

    Python正则表达式匹配日期与时间的方法

    下面给大家介绍下Python正则表达式匹配日期与时间 #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'Randy' import re from datetime import datetime test_date = '他的生日是2016-12-12 14:34,是个...

    Shell与Python正则表达式参考

    Shell与Python正则表达式参考 正则表达式(RE)是一些由字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因此能按某种模式匹配一个有相似特征的字符串的集合,简单地说,正则表达式就是用在字符...

    Python程序设计:正则表达式检索与替换.pptx

    正则表达式是一个特殊的字符序列,它能方便的检查一个字符串是否与某种模式匹配,利用正则可以快速准确的对邮箱进行校验。 任务 邮箱验证 任务知识点 正则表达式概念与语法 常用匹配规则 正则表达式检索与替换 知识...

    精通正则表达式 中英文

     《精通正则表达式(第3版)》,以明晰轻松的笔调向程序员深入浅出地讲解复杂的知识,并给出了现实世界中复杂问题的解决办法,读者能够立刻运用书中丰富的知识,巧妙而高效地解决各种问题。 此书为英文版,因为中文...

    PHP常用正则表达式汇总

    PHP常用正则表达式汇总,平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用

Global site tag (gtag.js) - Google Analytics