Python通过正则表达式选取callback的方法
本文实例讲述了Python通过正则表达式选取callback的方法。分享给大家供大家参考。具体如下:
最近在瞎想怎么通过xpath去精确抓取文章的正文,跟parselets类似的想法,只不过更简单。
代码设计上采用正则表达式匹配URL,再选择callback handler的方式,主要参考web.py的分发器(Dispatcher)。
当然,这个实现比较老土一些,全部用function的方式回调,没有用类。
#!/bin/env python import re, sys # Define parser first. def baidu(username): # Business logic return "Using parser Baidu. and the user's name is: %s." % username def qzone(uin): # Business logic return "Using parser Qzone, and the user's QQ is: %s." % uin # From web.py def group(seq, size):#{{{ """ Returns an iterator over a series of lists of length size from iterable. >>> list(group([1,2,3,4], 2)) [[1, 2], [3, 4]] >>> list(group([1,2,3,4,5], 2)) [[1, 2], [3, 4], [5]] """ def take(seq, n): for i in xrange(n): yield seq.next() if not hasattr(seq, 'next'): seq = iter(seq) while True: x = list(take(seq, size)) if x: yield x else: break #}}} def parser_init(url,mapping): for pat, what in group(mapping,2): result = re.compile('^' + pat + '$').match(url) if result: return what, [x for x in result.groups()] return None, None if __name__ == '__main__': mapping = ( 'http://(?:hi|space).baidu.com/([^/]+)(?:/.*)?','baidu', 'http://(\d+).qzone.qq.com(?:/.*)?','qzone', ) (func, args) = parser_init(sys.argv[1],mapping) if func: callback = func if func in globals(): callback = globals()[func] if callable(callback): print callback(*args) else: print 'No parser found.';
希望本文所述对大家的Python程序设计有所帮助。
相关推荐
-
Python中正则表达式的详细教程
1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了. 正则表达式的大致匹配过程是: 1.依次拿出表达式和文本中的字符比较, 2.如果每
-
Python中正则表达式match()、search()函数及match()和search()的区别详解
match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none 例如: #! /usr/bin/env python # -*- coding=utf-8 -*- import re text = 'pythontab' m = re.ma
-
python使用正则表达式提取网页URL的方法
本文实例讲述了python使用正则表达式提取网页URL的方法.分享给大家供大家参考.具体实现方法如下: import re import urllib url="http://www.jb51.net" s=urllib.urlopen(url).read() ss=s.replace(" ","") urls=re.findall(r"<a.*?href=.*?<\/a>",ss,re.I) for i i
-
Python for Informatics 第11章之正则表达式(二)
注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 11.1 正则表达式的字符匹配 我们可以用许多其它的特殊字符创建更加强大的正则表达式.最常用的特殊符号是可匹配任何字符的句号(".").在以下的示例中,正则表达式"F..m:"将匹配"From:","Fxxm:","F12m:",或者"F!@m:"等类似字符串
-
Python利用正则表达式匹配并截取指定子串及去重的方法
本文实例讲述了Python利用正则表达式匹配并截取指定子串及去重的方法.分享给大家供大家参考.具体如下: import re pattern=re.compile(r'\| (\d+) \| (\d+) \|') numset=set() all=''' | 29266795 | 533 | | 29370116 | 533 | | 29467495 | 533 | | 29500404 | 533 | | 29500622 | 533 | | 29515964 | 530 | | 295160
-
Python for Informatics 第11章之正则表达式(四)
注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 11.3 组合查询和抽取 如果我们想以"X-"字符串开头的行中找到数字,就像下面两行字符串: X-DSPAM-Confidence: 0.8475 X-DSPAM-Probability: 0.0000 但我们不只是要任意行中的任意浮点数,而是具备上面格式的行中的数字. 我们可以创建以下正则表达式来选择这样的行: ^X-.*: [0-9.]+ 这个表达式的含
-
Python for Informatics 第11章 正则表达式(一)
正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 目前为止,我们一直在通读文件,查找模式和抽取字里行间我们感兴趣的各种信息.我们一
-
在Python中使用正则表达式的方法
正则表达式(regular expression)是一种用形式化语法描述的文本匹配模式.在需要处理大量文本处理的应用中有广泛的使用,我没使用的编辑器,IDE中的搜索常用正则表达式作为搜索模式.玩过*nix系统的都知道如sed,grep,awk这类的命令,他们是非常强大的文本处理工具.几乎所有的语言都有对正则表达式的支持,有的直接在语法中支持,有的使用扩展库的形式.python使用的就是扩展库re. re.search(pattern,string,flag=0) 搜索文本中的匹配的模式是
-
Python通过正则表达式选取callback的方法
本文实例讲述了Python通过正则表达式选取callback的方法.分享给大家供大家参考.具体如下: 最近在瞎想怎么通过xpath去精确抓取文章的正文,跟parselets类似的想法,只不过更简单. 代码设计上采用正则表达式匹配URL,再选择callback handler的方式,主要参考web.py的分发器(Dispatcher). 当然,这个实现比较老土一些,全部用function的方式回调,没有用类. #!/bin/env python import re, sys # Define pa
-
Python使用正则表达式实现文本替换的方法
本文实例讲述了Python使用正则表达式实现文本替换的方法.分享给大家供大家参考,具体如下: 2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: ① 如果不是在某个文件夹里面则将文件夹名称插入前面 ② 所有的文件名名称加上一个前缀 直接看代码吧: # encoding: UTF-8 import re # 将正则表达式编译成Pattern对象 p = re.compi
-
Python爬虫正则表达式常用符号和方法
正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分. 1.常用符号 . :匹配任意字符,换行符 \n 除外 :匹配前一个字符0次或无限次 ? :匹配前一个字符0次或1次 .* :贪心算法,尽可能的匹配多的字符 .*? :非
-
python中正则表达式的使用方法
本文主要关于python的正则表达式的符号与方法. findall: 找寻所有匹配,返回所有组合的列表 search: 找寻第一个匹配并返回 sub: 替换符合规律的内容,并返回替换后的内容 .:匹配除了换行符以外的任意字符 a = 'xy123' b = re.findall('x...',a) print(b) # ['xy12'] *:匹配前一个字符0次或者无限次 a = 'xyxy123' b = re.findall('x*',a) print(b) # ['x', '', 'x',
-
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
在pdf转为文本的时候,经常会多出空格,影响数据观感,因此需要去掉文本中多余的空格,而文本中的英文之间的正常空格需要保留,输入输出如下: input:我今天 赚了 10 个亿,老百姓very happy. output:我今天赚了10个亿,老百姓very happy. 代码 def clean_space(text): """" 处理多余的空格 """ match_regex = re.compile(u'[\u4e00-\u9fa5.
-
Python基于正则表达式实现检查文件内容的方法【文件检索】
本文实例讲述了Python基于正则表达式实现检查文件内容的方法分享给大家供大家参考,具体如下: 这个是之前就在学python,欣赏python的小巧但是功能强大,是连电池都自带的语言.平时工作中用Java ,觉得python在日常生活中比java用处要大,首先语法没那么复杂,特别是io的操作,java里要写一大坨没关的代码.还有就是不用编译,而且linux系统默认都会自带. 这次遇到的问题是工作当中想要迁移一个系统中的一个模块,这个时候需要评估模块里的代码有没有对其他代码强依赖,就是有没有imp
-
Python基于正则表达式实现文件内容替换的方法
本文实例讲述了Python基于正则表达式实现文件内容替换的方法.分享给大家供大家参考,具体如下: 最近因为有一个项目需要从普通的服务器移植到SAE,而SAE的thinkphp文件结构和本地测试的有出入,需要把一些html和js的引用路径改成SAE的形式,为了不手工改,特地速成了一下Python的正则表达式和文件操作.主要要求是将某目录下的html和js里面的几个路径变量分别更改成相应的形式,匹配文件名的时候用了正则 import os import re #all file in the dir
-
Python使用正则表达式过滤或替换HTML标签的方法详解
本文实例讲述了Python使用正则表达式过滤或替换HTML标签的方法.分享给大家供大家参考,具体如下: python正则表达式关键内容: python正则表达式转义符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^
-
python使用正则表达式分析网页中的图片并进行替换的方法
本文实例讲述了python使用正则表达式分析网页中的图片并进行替换的方法.分享给大家供大家参考.具体分析如下: 这段代码分析网页中的所有图片表单<img>,分析后为其前后添加相应的修饰标签,并添加到图片的超级链接. 复制代码 代码如下: result = value.replace("[ page ]","").replace(' ',u' ') p=re.compile(r'''(<img\b[^<>]*?\bsrc[\s\t\r\
随机推荐
- 自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
- 入侵oracle数据库的一些技巧
- Jquery promise实现一张一张加载图片
- 通过npm引用的vue组件使用详解
- javascript Zifa FormValid 0.1表单验证 代码打包下载
- js 浏览器事件介绍
- 一个模仿oso的php论坛程序源码(之三)第1/2页
- php微信公众平台配置接口开发程序
- 如何解决PHP无法实现多线程的问题
- C++之WSAAsyncSelect模型实例
- Android 应用的安装过程详解
- linux mysql 报错:MYSQL:The server quit without updating PID file
- 用js实现的抽象CSS圆角效果!!
- 3分钟写出来的Jquery版checkbox全选反选功能
- 删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。
- linux shell字符串内置的常用操作(获取长度、查找、替换)
- DOM 事件的深入浅出(一)
- javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
- php下通过curl抓取yahoo boss 搜索结果的实现代码
- 使用IE的地址栏来辅助调试Web页脚本