python re模块和collections
re模块下的常用方法
- import re
- ret = re.findall('a', 'eva egon yuan') # 返回所有满足匹配条件的结果,放在列表里
- print(ret) #结果 : ['a', 'a']
- ret = re.search('a', 'eva egon yuan').group()
- print(ret) #结果 : 'a'
- # 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
- # 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
- ret = re.match('a', 'abc').group() # 同search,不过尽在字符串开始处进行匹配
- print(ret)
- #结果 : 'a'
- ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
- print(ret) # ['', '', 'cd']
- ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1)#将数字替换成'H',参数1表示只替换1个
- print(ret) #evaHegon4yuan4
- ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组(替换的结果,替换了多少次)
- print(ret)
- obj = re.compile('\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
- ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
- print(ret.group()) #结果 : 123
- import re
- ret = re.finditer('\d', 'ds3sy4784a') #finditer返回一个存放匹配结果的迭代器
- print(ret) # <callable_iterator object at 0x10195f940>
- print(next(ret).group()) #查看第一个结果
- print(next(ret).group()) #查看第二个结果
- print([i.group() for i in ret]) #查看剩余的左右结果
- import requests
- import re
- import json
- def getPage(url):
- response=requests.get(url)
- return response.text
- def parsePage(s):
- com=re.compile('<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
- '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>',re.S)
- ret=com.finditer(s)
- for i in ret:
- yield {
- "id":i.group("id"),
- "title":i.group("title"),
- "rating_num":i.group("rating_num"),
- "comment_num":i.group("comment_num"),
- }
- def main(num):
- url='https://movie.douban.com/top250?start=%s&filter='%num
- response_html=getPage(url)
- ret=parsePage(response_html)
- print(ret)
- f=open("move_info7","a",encoding="utf8")
- for obj in ret:
- print(obj)
- data=json.dumps(obj,ensure_ascii=False)
- f.write(data+"\n")
- if __name__ == '__main__':
- count=0
- for i in range(10):
- main(count)
- count+=25
爬虫练习
collections模块
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
- >>> from collections import namedtuple
- >>> Point = namedtuple('Point', ['x', 'y'])
- >>> p = Point(1, 2)
- >>> p.x
- 1
- >>> p.y
- 2
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
- from collections import deque
- >>> q = deque(['a', 'b', 'c'])
- >>> q.append('x')
- >>> q.appendleft('y')
- >>> q
- deque(['y', 'a', 'b', 'c', 'x'])
3.Counter: 计数器,主要用来计数
- c = Counter('abcdeabcdabcaba')
- print c
- 输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
4.OrderedDict: 有序字典
- >>> from collections import OrderedDict
- >>> d = dict([('a', 1), ('b', 2), ('c', 3)])
- >>> d # dict的Key是无序的
- {'a': 1, 'c': 3, 'b': 2}
- >>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
- >>> od # OrderedDict的Key是有序的
- OrderedDict([('a', 1), ('b', 2), ('c', 3)])
5.defaultdict: 带有默认值的字典
- >>> from collections import defaultdict
- >>> dd = defaultdict(lambda: 'N/A')
- >>> dd['key1'] = 'abc'
- >>> dd['key1'] # key1存在
- 'abc'
- >>> dd['key2'] # key2不存在,返回默认值
- 'N/A'
python re模块和collections的更多相关文章
- Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块
主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功 ...
- python常见模块之collections模块
一.模块简介 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtu ...
- Python中模块之collections系列
collection系列功能介绍 1. 常用的集中类 1. Counter(计数器) 计数器的常用方法如下: 创建一个字典计数器 格式:collections.Counter(obj) 例如:prin ...
- Python标准模块--collections
1.模块简介 collections包含了一些特殊的容器,针对Python内置的容器,例如list.dict.set和tuple,提供了另一种选择: namedtuple,可以创建包含名称的tuple ...
- python常用模块(1):collections模块和re模块(正则表达式详解)
从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...
- Python常用数据结构之collections模块
Python数据结构常用模块:collections.heapq.operator.itertools collections collections是日常工作中的重点.高频模块,常用类型由: 计数器 ...
- python基础 ---time,datetime,collections)--时间模块&collections 模块
python中的time和datetime模块是时间方面的模块 time模块中时间表现的格式主要有三种: 1.timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算 ...
- python的常用模块之collections模块
python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...
- python常用模块collections os random sys
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...
随机推荐
- ML(6)——改进机器学习算法
现在我们要预测的是未来的房价,假设选择了回归模型,使用的损失函数是: 通过梯度下降或其它方法训练出了模型函数hθ(x),当使用hθ(x)预测新数据时,发现准确率非常低,此时如何处理? 在前面的章节中我 ...
- [转]java虚拟机工作原理详解
一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 javac YourClassNam ...
- 将 vue 挂在 window 对象上,实现能调用 elementUI 的组件
html 部分: <div id="sample"> </div> js 部分(将js代码放在 body 的 onload事件中: <body onl ...
- gets_s()函数的参数太少,strcpy_s():形参和实参 2 的类型不同,等c函数在Visual Studio上出现的问题, get()函数和scanf()读取字符串的区别,栈的随机性
首先,这些C函数,在VS上要加_s后缀的原因是,这些函数存在字符串越界等问题,可以参考这篇文章,https://blog.csdn.net/silleyj/article/details/854540 ...
- java-shiro登录验证
登录验证: LoginController:(LoginController.java) @ResponseBody @RequestMapping(value="/login", ...
- Spring4相关jar包介绍(转)
Spring4相关jar包介绍 spring-core.jar(必须):这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当 ...
- 基于Eclipse搭建hadoop开发环境
一.基础环境准备 1.Eclipse 下载地址:http://pan.baidu.com/s/1slArxAP 2.JDK1.8 下载地址:http://pan.baidu.com/s/1i5iNy ...
- NVMe标准规范
NVMe NVM Express(NVMe),或称非易失性内存主机控制器接口规范(Non-Volatile Memory express),,是一个逻辑设备接口规范.他是与AHCI类似的.基于设备逻辑 ...
- 一些常用的排序算法(C版)
1. 直接插入排序(稳定排序) 简单的说就是将序列分为有序序列和无序序列.每一趟排序都是将无序序列的第一个元素插入有序序列中.R[1… i-1] <- R[i…n] , 每次取R[i]插入到R[ ...
- mysql57免安装版配置
1,下载mysql5.7压缩文件[具体到官网下载就行了] 2,解压并把mysql5.7放到c盘根目录下 3,进入mysql5.7主目录修改my-default.ini 重命名为:my.ini [如果没 ...