re模块下的常用方法

  1. import re
  2.  
  3. ret = re.findall('a', 'eva egon yuan') # 返回所有满足匹配条件的结果,放在列表里
  4. print(ret) #结果 : ['a', 'a']
  5.  
  6. ret = re.search('a', 'eva egon yuan').group()
  7. print(ret) #结果 : 'a'
  8. # 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
  9. # 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
  10.  
  11. ret = re.match('a', 'abc').group() # 同search,不过尽在字符串开始处进行匹配
  12. print(ret)
  13. #结果 : 'a'
  14.  
  15. ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
  16. print(ret) # ['', '', 'cd']
  17.  
  18. ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1)#将数字替换成'H',参数1表示只替换1
  19. print(ret) #evaHegon4yuan4
  20.  
  21. ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组(替换的结果,替换了多少次)
  22. print(ret)
  23.  
  24. obj = re.compile('\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
  25. ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
  26. print(ret.group()) #结果 : 123
  27.  
  28. import re
  29. ret = re.finditer('\d', 'ds3sy4784a') #finditer返回一个存放匹配结果的迭代器
  30. print(ret) # <callable_iterator object at 0x10195f940>
  31. print(next(ret).group()) #查看第一个结果
  32. print(next(ret).group()) #查看第二个结果
  33. print([i.group() for i in ret]) #查看剩余的左右结果
  1. import requests
  2.  
  3. import re
  4. import json
  5.  
  6. def getPage(url):
  7.  
  8. response=requests.get(url)
  9. return response.text
  10.  
  11. def parsePage(s):
  12.  
  13. com=re.compile('<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
  14. '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>',re.S)
  15.  
  16. ret=com.finditer(s)
  17. for i in ret:
  18. yield {
  19. "id":i.group("id"),
  20. "title":i.group("title"),
  21. "rating_num":i.group("rating_num"),
  22. "comment_num":i.group("comment_num"),
  23. }
  24.  
  25. def main(num):
  26.  
  27. url='https://movie.douban.com/top250?start=%s&filter='%num
  28. response_html=getPage(url)
  29. ret=parsePage(response_html)
  30. print(ret)
  31. f=open("move_info7","a",encoding="utf8")
  32.  
  33. for obj in ret:
  34. print(obj)
  35. data=json.dumps(obj,ensure_ascii=False)
  36. f.write(data+"\n")
  37.  
  38. if __name__ == '__main__':
  39. count=0
  40. for i in range(10):
  41. main(count)
  42. count+=25

爬虫练习

collections模块

1.namedtuple: 生成可以使用名字来访问元素内容的tuple

  1. >>> from collections import namedtuple
  2. >>> Point = namedtuple('Point', ['x', 'y'])
  3. >>> p = Point(1, 2)
  4. >>> p.x
  5. 1
  6. >>> p.y
  7. 2

2.deque: 双端队列,可以快速的从另外一侧追加和推出对象

  1. from collections import deque
  2. >>> q = deque(['a', 'b', 'c'])
  3. >>> q.append('x')
  4. >>> q.appendleft('y')
  5. >>> q
  6. deque(['y', 'a', 'b', 'c', 'x'])

3.Counter: 计数器,主要用来计数

  1. c = Counter('abcdeabcdabcaba')
  2. print c
  3. 输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
  1. 其他详细内容 http://www.cnblogs.com/Eva-J/articles/7291842.html

4.OrderedDict: 有序字典

  1. >>> from collections import OrderedDict
  2. >>> d = dict([('a', 1), ('b', 2), ('c', 3)])
  3. >>> d # dict的Key是无序的
  4. {'a': 1, 'c': 3, 'b': 2}
  5. >>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
  6. >>> od # OrderedDict的Key是有序的
  7. OrderedDict([('a', 1), ('b', 2), ('c', 3)])

5.defaultdict: 带有默认值的字典

  1. >>> from collections import defaultdict
  2. >>> dd = defaultdict(lambda: 'N/A')
  3. >>> dd['key1'] = 'abc'
  4. >>> dd['key1'] # key1存在
  5. 'abc'
  6. >>> dd['key2'] # key2不存在,返回默认值
  7. 'N/A'

python re模块和collections的更多相关文章

  1. Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块

    主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功 ...

  2. python常见模块之collections模块

    一.模块简介 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtu ...

  3. Python中模块之collections系列

    collection系列功能介绍 1. 常用的集中类 1. Counter(计数器) 计数器的常用方法如下: 创建一个字典计数器 格式:collections.Counter(obj) 例如:prin ...

  4. Python标准模块--collections

    1.模块简介 collections包含了一些特殊的容器,针对Python内置的容器,例如list.dict.set和tuple,提供了另一种选择: namedtuple,可以创建包含名称的tuple ...

  5. python常用模块(1):collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

  6. Python常用数据结构之collections模块

    Python数据结构常用模块:collections.heapq.operator.itertools collections collections是日常工作中的重点.高频模块,常用类型由: 计数器 ...

  7. python基础 ---time,datetime,collections)--时间模块&collections 模块

    python中的time和datetime模块是时间方面的模块 time模块中时间表现的格式主要有三种: 1.timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算 ...

  8. python的常用模块之collections模块

    python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块?    常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...

  9. python常用模块collections os random sys

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...

随机推荐

  1. ML(6)——改进机器学习算法

    现在我们要预测的是未来的房价,假设选择了回归模型,使用的损失函数是: 通过梯度下降或其它方法训练出了模型函数hθ(x),当使用hθ(x)预测新数据时,发现准确率非常低,此时如何处理? 在前面的章节中我 ...

  2. [转]java虚拟机工作原理详解

    一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 javac YourClassNam ...

  3. 将 vue 挂在 window 对象上,实现能调用 elementUI 的组件

    html 部分: <div id="sample"> </div> js 部分(将js代码放在 body 的 onload事件中: <body onl ...

  4. gets_s()函数的参数太少,strcpy_s():形参和实参 2 的类型不同,等c函数在Visual Studio上出现的问题, get()函数和scanf()读取字符串的区别,栈的随机性

    首先,这些C函数,在VS上要加_s后缀的原因是,这些函数存在字符串越界等问题,可以参考这篇文章,https://blog.csdn.net/silleyj/article/details/854540 ...

  5. java-shiro登录验证

    登录验证: LoginController:(LoginController.java) @ResponseBody @RequestMapping(value="/login", ...

  6. Spring4相关jar包介绍(转)

    Spring4相关jar包介绍 spring-core.jar(必须):这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当 ...

  7. 基于Eclipse搭建hadoop开发环境

    一.基础环境准备 1.Eclipse 下载地址:http://pan.baidu.com/s/1slArxAP 2.JDK1.8  下载地址:http://pan.baidu.com/s/1i5iNy ...

  8. NVMe标准规范

    NVMe NVM Express(NVMe),或称非易失性内存主机控制器接口规范(Non-Volatile Memory express),,是一个逻辑设备接口规范.他是与AHCI类似的.基于设备逻辑 ...

  9. 一些常用的排序算法(C版)

    1. 直接插入排序(稳定排序) 简单的说就是将序列分为有序序列和无序序列.每一趟排序都是将无序序列的第一个元素插入有序序列中.R[1… i-1] <- R[i…n] , 每次取R[i]插入到R[ ...

  10. mysql57免安装版配置

    1,下载mysql5.7压缩文件[具体到官网下载就行了] 2,解压并把mysql5.7放到c盘根目录下 3,进入mysql5.7主目录修改my-default.ini 重命名为:my.ini [如果没 ...