易截截图软件、单文件、免安装、纯绿色、仅160KB

话说Python(七)从Go...ogle说起

今天一上课,大牛老师就给大家出了一道题:
编程:请从字符串“goOoOogle”中找出以“O”开头,并以“O”结束的部分。
“这还不简单,看我的”小菜不一会儿就给出了答案:
>>> s="goOoOogle"
>>> s.find("O")
2
>>> s.find("O",3)
4
>>> s[2:5]
'OoO'
>>>

 
“小菜啊,你咋这么傻呢!”小白不禁在心里叹息,“老师出这道题不是明摆着考我们正则表达式嘛!”
果然不出小白的预料,大牛老师又出了一道题:
请从“goOoOogle”中再找出连续的“o”,不分大小写。
“不就是循环判断嘛,继续find”小菜又开始了自己的算法之旅。
“小白,你来回答一下”大牛看到小白好像已经完成,便让他回答一下。
“这还不简单吗?用正则匹配一下不就行了”小白摸了摸后脑勺,“至于程序嘛——还没写,嘿嘿。”
先看看我们的“加强版”爬虫:
import chardet,urllib.request,urllib.parse,re
from sparrow.http.response import Response
class Crawler(object):
def __init__(self,reqQueue=None,resQueue=None): #两个队列,一个用于提取网页请求,一个存放抓取的结果
self.reqQueue=reqQueue
self.resQueue=resQueue
def getData(self,request): #获得网页数据和服务器返回的编码
response=urllib.request.urlopen(request)
info=Response(response)
encoding=info.charset
data=response.read()
return (encoding,data)
def getLinks(self,url,content): #解析网页内容,获得所有链接
rule_link=re.compile(r"(?i)<a\s+href=(?P<link>.+?)[\s>]") #正则表达式
links=rule_link.findall(content)
norLinks=[]
for i,link in enumerate(links): #将不完全的链接(通常为站内链接)补充完全
link=link.strip("\"\'") #过滤引号
us=urllib.parse.urlsplit(link)
if(us.scheme==''):
link=urllib.parse.urljoin(url,link)
norLinks.append(link)
return norLinks

def getEnco


相关文档:

Python中RE模块的应用

      Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影。
  & ......

Python标准库的threading.Thread类

这个类表示在单独的控制线程中运行的活动。有两种方法可以指定这种活动,给构造函数传递回调对象,或者在子类中重写run() 方法。其他方法(除了构造函数)都不应在子类中被重写。换句话说,在子类中只有__init__()和run()方法被重写。
一旦线程对象被创建,它的活动需要通过调用线程的start()方法来启动。这方法再调用控制 ......

使用C语言扩展Python(三)

上一篇中我们已经了解如何在Python程序和C模块之间进行值的相互传递,现在我们来进入实作阶段,看看如何将一个C语言开发的开源mp3编解码库LAME包装为一个Python下可以使用的扩展模块。首先去http://lame.sourceforge.net/download.php下载LAME的源代码,然后切换到root用户编译源代码,./configure
make
make instal ......

使用C语言扩展Python(二)

在上一篇中我们已经使用c语言实现了一个最简单的扩展模块,这一篇中将在其基础上进行功能的丰富。首先来考虑如何从外部的Python向C模块传递进参数,foo_bar2展示了如何向C模块传递整数,浮点数,字符串三个参数,其中"ids"指明了传入参数的数据类型。PyArg_ParseTuple负责对args进行解析,若解析失败则返回0.代码#include&n ......

Python矩阵转置中的二维数组的实际操作方案介绍

如果你对Python矩阵转置的实际应用操作方案的转置不知道如何进行下一步时,你就你需要转置一个二维数组,将Python矩阵转置的行列互换.
这样就可以完成你所需要的应用操作,以下是文章的具体操作。
你需要转置一个二维数组,将行列互换,讨论:你需要确保该数组的行列数都是相同的.比如:
arr
 = [[1, 2,&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号