python匹配中文的时候特别要注意的是匹配的正则字符串是否是Unicode格式的: import re source = "s2f程序员杂志一2d3程序员杂志二2d3程序员杂志三2d3程序员杂志四2d3" temp = source.decode('utf8') xx=u"([/u4e00-/u9fa5]+)" pattern = re.compile(xx) results = pattern.findall(temp) for result in result…
之前一直有使用python 正则表达式来做中文字符串或者中英文数字混合的字符串的匹配,发现有不少情况下会匹配失灵或者结果混乱,并且在不同操作系统上匹配结果也不一致,查了很久都不知道是什么原因.今天终于彻底弄懂了,原来还是python中对中文的编码问题造成的. 解决办法: step1 在设置默认编码为UTF8之后,将正则表达式和待匹配字符串都decode("utf8")统一成 unicode再进行匹配: step2 正则表达式前面一定要加 r : 示例代码: kw_regexp = r'…
python 中 正则表达式 的应用 最近作业中出现了正则表达式,顺便学习了一下. python比较厉害的一点就是自带对正则表达式的支持,用起来很方便 正则表达式 首先介绍一下什么是正则表达式. 正则表达式是用来进行字符串匹配的工具,在模式匹配中有广泛的应用. 正则表达式用若干符号来描述符合某一语法规则的字符串,从而实现匹配. 关于正则表达式的语法,参见维基百科,介绍的非常详细了. 一个用正则表达式写成的字符串也被成为模式串,意思是我们可以用这个串进行模式匹配. python中正则表达式的应用…
一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视断言(lookbehind assertion) 后视断言又称为正向后视断言.后视断定.后行断言等,与前视断言功能类似,只是前视断言是找匹配串的右边要与前视断言指定的模式匹配,而后视断言是找匹配串的左边要与后视断言指定的模式匹配. 语法:(?<=-),其中-为一个子正则表达式 例子: 要使用后视断言查找…
python中os模块中文帮助   python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8,个人博客:http://butlandblog.appspot.com/ 注此模块中关于unix中的函数大部分都被略过,翻译主要针对WINDOWS,翻译速度很快,其中很多不足之处请多多包涵. 这个模块提供了一个轻便的方法使用要依赖操作系统的功能. 如何你只是想读或写文件,请使用open() ,如果…
在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配. 其中,re.findall() 函数可以遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表. 在python源代码中,展示如下: 搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器.找到 RE 匹配的所有子串,并把它们作为一个迭代器返回. def findall(pattern, string, flags=0): 第一个参数,正则表达式 第二个参数,搜索的是那些字符串 第三个参数,匹配的…
正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索,替换,匹配验证都不在话下. 当然,对于爬虫来说,有了它,从HTML里提取想要的信息就非常方便了. 先看一下常用的匹配规则: \w:匹配字母.数字及下划线 \W:匹配不是字母.数字及下划线 \s:匹配任意空白字符,等价于[\t\n\r\f] \S:匹配任意非空字符 \d:匹配任意数字,等价于[0-9] \D:匹配任意飞数字的字符 \A:匹配字符串开头 \Z:匹配字符串结尾,如果存在换行,只匹配到换行前得结束字字符串…
今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = 'asfasdfgasffas青蛙无法·啊沙发上,.,从 dw2efdrqw15894648760asfasf' \ 'asf,./asf029-81464970jhklasdnf,wsdn15888888888' patt = '1[3,5,8,7]\d{9}|0\d{2}-\d{8}' data…
正则表达式是匹配字符串的强大武器,它的核心思想是给字符串定义规则,凡是符合规则的字符串就是匹配了,否则就是不合法的.在介绍Python的用法之前,我们先讲解一下正则表达式的规则,然后再介绍在Python中如何运用. 如果直接给出字符,那么就是精确的匹配,例如'abc'当然是匹配'abc'了. \d可以匹配数字(0-9) \D和\d相反,就是说只要不是0-9,都可以匹配 \w可以匹配字母或者数字(0-9|a-z|A-Z) \W和\w相反,就是说只要不是字母和数字,都可以匹配 \s可以匹配空格,\n…
之前总是搞不明白正则表达式中的反斜杠的问题.今天经过查阅资料终于搞明白了. 其中最重要的一点就是Python自己的字符串中定义的反斜杠也是转义字符,而正则表达式中的反斜杠也是转义字符,所以正则表达式中反斜杠会涉及到双重转换的问题. 要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定…
正则表达式是一种通用的字符串匹配技术,是不会因为编程语言不一样而发生变化的如果想查找对应规则的字符串,就可以用正则表达式python中要使用正则表达式需使用re模块,它是正则表达式在python中的封装1.匹配的方式:match.search.findall1.1 match 表示: 从开始的位置进行匹配,即从第一个字符开始匹配,第一个没有匹配到,则整个就不会匹配到 # 匹配特定的字符串 "abc" import re re_pattern = r'abc'#写匹配规则式时,要加上转意…
一. 引言 在<第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中正则表达式的扩展功能非常多,所有扩展功能都是在左括号后面跟问号"?"来表示,具体扩展功能是要看问号后面的字符来确认,如"P"表示组名相关扩展. 下面老猿将未介绍的主要正则表达式扩展功能在本节进行介绍,下面介绍的扩展功能中的"-"都表示一个合法的子模式…
目录 一.什么是正则表达式 二.正则表达式的基础知识 1. 原子 1)普通字符作为原子 2)非打印字符作为原子 3) 通用字符作为原子 4) 原子表 2. 元字符 1)任意匹配元字符 2)边界限制元字符 3)限定符 4)模式选择符 5)模式单元符 3. 模式修正 4. 懒惰模式和贪婪模式 三.正则表达式常见的函数 1. re.match() 2. re.search() 3. 全局匹配函数 4. re.sub() 我们在进行字符串处理的时候,希望按自定义的规则进行处理,我们将这些规则称为模式.我…
字符串的匹配查询 re模块中的findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果.该函数的参数含义如下: findall(pattern, string, flags=0) pattern:指定需要匹配的正则表达式. string:指定待处理的字符串. flags:指定匹配模式,常用的值可以是re.I.re.M.re.S和re.X.re.I的模式是让正则表达式对大小写不敏感:re.M的模式是让正则表达式可以多行匹配:re.S的模式指明正则符号.可以匹…
一.列表 元字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了正则对象的 Multiline 模式,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了正则对象的 Multilin…
今天听到一句话,觉得很在理——"当你遇到一个问题,想到用正则表达式解决时,就变成了两个问题" 这也从侧面说明了正则表达式比较难理解.下面我将用通俗易懂的方式总结一下,最近遇到的一些正则表达式的问题 一. 贪婪匹配的"毛病" 1. 太贪婪就"歇菜"了 匹配模式为r".*(\d*).*",在这个模式中,(\d*)表示贪婪匹配,匹配前面的字符\d,也就是数字0次或无数次,但是我们的字符串中,\d匹配无数次的情况是不存在的(实际上对于…
python3中str默认为Unicode的编码格式 python2中str默认为bytes类型的编码格式 Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等 所以在Python3中必须将str类型转换成bytes类型的 在Python中使用encode的方式可以进行字符的编码 实际用法: >>>a = "中国" >>> a.encode("utf-8") b'\xe4\xb8\xad\x…
一.前言 在之前找工作过程中,面试时经常被问到会不会python,懂不懂正则表达式.心里想:软件的东西和芯片设计有什么关系?咱也不知道因为啥用这个,咱也不敢问啊!在网上搜索到了一篇关于脚本在ASIC领域中应用的文章(原文见参考文献1),里边提到了python的用武之地: 本文以<Python编程快速上手——让繁琐工作自动化>书中的示例,讲述利用python实现文本中特定内容提取的方式. 二.提取特定内容示例 需求:找出文本中所有的电话号码和邮件地址.设计方案:在剪贴板的文本中提取出所有与电话号…
一. 引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是组模式的扩展功能,其实在re模块中组模式的扩展功能非常多,所有组模式的扩展功能,都是在组定义的左括号后面跟问号"?"来表示,具体扩展功能是要看问号后面的字符来确认,如"P"表示组名相关扩展. 下面介绍组匹配模式扩展功能的前视断言和前视取反,本节继本章后面介绍的扩展功能中组的括号内…
一.前言 一般来说,为了方便,使用python的时候都会使用csv模块去写数据到csv文件,但是写入中文的时候,经常会报错: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 我试过直接用utf8编码打开文件,然后直接将要写入的字段拼接为逗号分隔的字符串,虽然能解决中文写入的问题,但是操作很麻烦.而且直接使用excel打开的时候,还是会显示乱码.…
使用方法 [1]用用命名空间System.Text.RegularExpressions [2]构造正则表达式 在使用正则表达式时,要先构造正则表达式,这就用到了Regex类,其构建方式有两种: 基本形式:Regex(正则表达式): 重载形式:Regex(正则表达式,匹配选项); 其中匹配选项是提供一些特殊帮助,是一个枚举值,包括下面六个值: Ignorecase(忽略大小写). ReghtToLeft(从右向左).     None(默认).     Culturelnvariant(忽略区域…
关于反斜杠的匹配问题可以参考: https://www.cnblogs.com/mzc1997/p/7689235.html 文章中提出了两个概念: 字符串转义和正则转义,我觉得是理解反斜杠的关键所在 1. 字符串转义 在一个字符串中 因为有\n\t 等特殊含义的字符存在,所以字符“\” 是转义字符(字符串转义),如果要取消其转义属性有两种方式: 1)再加一个转义字符:'\\'2)使用原始字符串:r'\' 2. 正则转义 正则表达式中,因为有\d,\s 等表示特殊意义的字符存在,所以正则表达式中…
Python内置功能非常强大,在字符串内置函数中提供了一个判断字符串是否全数字的方法,而且这个方法不只是简单判断阿拉伯数字,包括中文数字和全角的阿拉伯数字都认识,这个函数就是字符串的isnumeric方法. 举例: >>> "一二三壹贰叁123123".isnumeric() True 老猿Python,跟老猿学Python!…
Django项目在访问Restful service时调用urllib.urlencode编码中文字符串时碰到下面这个错误. v = quote_plus(str(v)) UnicodeEncodeError: 'ascii' codec can't encode characters in position........... 这个错误在windows7的开发环境下没有发生,在Linux生产环境下发生了,比较郁闷,刚上线以后的Bug.Google以后,在一份中文资料(链接见参考资料)中看到U…
(?i)<r i="([A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12})" n="${LastName}" n2="${FirstName}" cid="${IndividualID}" 在正则表达式的最前面加上(?i)就表示不区分大小写进行匹配…
当使用这个库的时候经常会出现各种乱码的情况. 首先要知道: text返回的是处理过的unicode的数据. content返回的是bytes的原始数据 也就是说r.content比r.text更加节省资源 如果headers没有charset字符集的化,text()会调用chardet来计算字符集,这又是消耗cpu的事情 倘若在conttent-type字段中没有制定charset的时候,默认使用的是ISO-8859-1编码,在处理英文的时候是没有问题,但是在处理中文的时候就会出现乱码的情况了.…
这个问题是一个具有很强操作性的问题.我这里有一个经验总结,分享一下,供参考:首先,提倡使用utf-8编码方案,因为它跨平台不错.经验一:在开头声明: # -*- coding: utf-8 -*- 有朋友问我-*-有什么作用,那个就是为了好看,爱美之心人皆有,更何况程序员?当然,也可以写成:# coding:utf-8经验二:遇到字符(节)串,立刻转化为unicode,不要用str(),直接使用unicode() unicode_str = unicode('中文', encoding='utf…
前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细的介绍,可以参考别的文章,这篇文章只是给出一些常用的正则表达式语法,以方便对re模块的使用进行讲解. 对正则表达式的介绍,可以参看这两篇文章: 正则表达式30分钟入门教程 正则表达式之道 注意:实验环境为 Python 3.4.3 正则表达式简介 正则表达式,又称正规表示式.正规表示法.正规表达式.…
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们通常还能看到其他美观的显示形式. 135-0909-4747 135 0909 4747 前三位由运营商规定,这里我们不考虑. 如何使用正则表达式匹配类似上面的手机号呢? import re result = re.match('\d\d\d-\d\d\d\d-\d\d\d\d', '135-090…
Python中正则表达式 re:re是提供正则表达式匹配操作的模块 一.什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某个模式匹配,Python 自1.5版本起增加了re模块,它提供Perl风格的正则表达式. 二.正则表达式的基本使用 1.re.match()介绍 match() 试图从字符串的起始位置对模式进行匹配,如果匹配成功,就返回一个匹配对象,如果匹配失败,就返回None,匹配对象的group()方法能显示成功匹配的对象. 使用语法: re.mat…