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 )
分享到:
相关推荐
最后,我们来总结一下使用Python正则表达式匹配不包含某几个字符的字符串需要注意的几个关键点: 1. 理解正则表达式的基本组成,包括元字符、量词、分组等; 2. 熟悉如何通过使用否定字符集`[^...]`来排除不想匹配的...
总结,`re.compile()`是Python正则表达式的重要工具,它使得我们可以预先编译正则表达式模式,提高程序的效率和可读性。通过创建正则表达式对象,我们可以灵活地执行多种正则操作,如查找、替换和分割字符串,从而在...
正则表达式是一种用于匹配字符串中字符组合的模式,它是一个强大的文本处理工具,在编程语言中常用于文本搜索、替换等操作。...希望这篇文章关于Python实现正则表达式匹配任意邮箱的方法能给大家带来帮助。
Python正则表达式是Python编程语言中的一个强大工具,用于处理和分析文本字符串。它允许开发者通过模式匹配来查找、替换或提取数据,广泛应用于数据清洗、文本挖掘、日志分析等领域。在Python中,正则表达式主要通过...
网上关于度分秒的经纬度提取我用不了,搞了好久的正则表达式,大家可以参考一下,如果有更好的方法,可以分享一下。
以上所述是小编给大家介绍的Python正则表达式匹配数字和小数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持! 如果你觉得本文对你有...
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。 ...
【Python正则表达式使用指南】是一篇专为Python初学者设计的教程,旨在帮助读者理解和运用Python中的正则表达式。这篇文档采用中英文对照的方式,内容清晰易懂,适合快速学习和实践。 正则表达式是用于匹配字符串的...
6. Python正则表达式的示例 - 编译正则表达式:`pattern = ***pile(r'hello')` - 匹配字符串:`match1 = pattern.match('helloworld!')` - 提取匹配信息:`match1.group()` - 使用标志位编译:`pattern = ***...
接着,定义了一个名为`SocialSecurityNumberValidator`的类,在主方法中使用`Pattern.compile`编译正则表达式,并使用`matcher.matches`来检查字符串是否与给定的模式匹配。 通过上述知识点的学习,读者可以了解到...
### Python正则表达式详解 #### 一、概述 Python中的正则表达式(re)模块提供了与Perl类似的正则表达式功能。无论是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这意味着该模块能够很好地处理各种字符...
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配字符串...在压缩包文件"正则表达式匹配"中,你可能找到更多关于正则表达式实际应用的实例和教程,这将有助于你加深理解和提升技能。
总之,Pyregex是一个非常实用的Python正则表达式工具,它让正则表达式的测试和调试变得直观和简单,是Python开发过程中不可或缺的辅助工具。对于学习和掌握正则表达式,以及提升Python文本处理能力,Pyregex都是一个...
总的来说,掌握Python中的字符串处理和正则表达式是任何Python开发者必备的技能,无论是在数据处理、文本分析还是网络爬虫等领域都有广泛应用。通过清华大学的精品课程,学习者可以系统地学习并掌握这些重要的编程...
Python正则表达式全套笔记v0.3 本文档是小小明个人笔记,涵盖了正则表达式的各个方面,包括各种模式、分组、断言、匹配、查找、替换和切割等。文档中提供了详细的正则匹配规则表,涵盖了基本字符规则、预定义字符集...
正则表达式匹配的过程是逐一比较表达式中的字符和文本中的字符,如果每个字符都匹配,则匹配成功;否则,匹配失败。若表达式中包含量词或边界,则匹配过程可能略有不同。量词分为贪婪和非贪婪两种模式,在贪婪模式下...
标题所涉及的知识点为:Python使用中文正则表达式匹配指定中文字符串的方法示例。在该主题下,我们首先要理解什么是正则表达式及其在Python中的应用。正则表达式是一套规则和符号模式,用于文本的查找、匹配和替换...
Python正则表达式是专门用于在字符串中匹配字符组合的一个强大的工具,它使用一种特殊的语法来表示搜索模式。正则表达式不仅在Python中有着广泛的应用,在UNIX世界中也扮演了重要的角色。本文档主要介绍Python中与...