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 )
分享到:
相关推荐
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
今天小编就为大家分享一篇Python实现正则表达式匹配任意的邮箱方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
以上所述是小编给大家介绍的Python正则表达式匹配数字和小数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持! 如果你觉得本文对你有...
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。 ...
网上关于度分秒的经纬度提取我用不了,搞了好久的正则表达式,大家可以参考一下,如果有更好的方法,可以分享一下。
本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法。分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: ...
实现支持 '.' 和 '*' 的正则表达式匹配 # '.' 匹配任意单个字符。 # '*' 匹配零个或多个前面的元素。 # 匹配应该覆盖整个字符串 (s) ,而不是部分字符串 # 说明: # s 可能为空,且只包含从 a-z 的小写字母。 # p ...
python正则表达式_深入浅出
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这 些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一 种过滤逻辑(可以用来做检索,截取或者替换...
PPT 讲述了正则表达式的使用方式以及如何使用python来操作正则表达式,内容简洁实用,适合平时查询,也适合PPT演讲使用~
Python正则表达式字符.xlsx
主要介绍了python使用正则表达式匹配字符串开头并打印的方法,结合实例形式分析了Python基于正则表达式操作字符串的相关技巧,需要的朋友可以参考下
今天小编就为大家分享一篇python正则表达式匹配不包含某几个字符的字符串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python 数字正则表达式 Python数字正则表达式 正则表达式是一种强大的文本处理工具,它可以用来匹配、查找、替换文本中的特定模式。在Python中,正则表达式模块re提供了一组函数,可以用来处理字符串中的正则表达式...
下面给大家介绍下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正则表达式参考 正则表达式(RE)是一些由字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因此能按某种模式匹配一个有相似特征的字符串的集合,简单地说,正则表达式就是用在字符...
正则表达式是一个特殊的字符序列,它能方便的检查一个字符串是否与某种模式匹配,利用正则可以快速准确的对邮箱进行校验。 任务 邮箱验证 任务知识点 正则表达式概念与语法 常用匹配规则 正则表达式检索与替换 知识...
《精通正则表达式(第3版)》,以明晰轻松的笔调向程序员深入浅出地讲解复杂的知识,并给出了现实世界中复杂问题的解决办法,读者能够立刻运用书中丰富的知识,巧妙而高效地解决各种问题。 此书为英文版,因为中文...
PHP常用正则表达式汇总,平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用