re模块练习
1.匹配标签
1 import re
2 ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','<h1>hello</h1>')
3 #还可以在分组中利用?P<name>的形式给分组起名字
4 #获取的匹配结果可以直接用group('名字')拿到对应的值
5 print(ret.group())
6 print(ret.group('tag_name'))
7
8
9 # -------------------------
10 ret = re.search(r'<(\w+)>\w+</\1>','<h1>hello</h1>')
11 #如果不给分组起名字,也可以用\序号来找到对应的组,表说要找的内容和前面的组的内容一致
12 #获取的匹配结果可以直接用group(序号)拿到对应的值
13 print(ret.group())
14 print(ret.group(1))
匹配标签
2.匹配整数
1 import re
2 ret = re.findall(r'\d+',"1-2*(60+(-40.35/5)-(-4*3))")
3 print(ret)
4
5 import re
6 ret = re.findall(r'-?\d+\.\d*|(-?\d+)',"1-2*(60+(-40.35/5)-(-4*3))")
7 print(ret)
8
9 ret.remove('')
10 print(ret)
数字匹配
3.数字匹配
1 # 3.数字匹配
2 # 1.匹配一段文本中的每行的时间字符串,比如’1990-07-12‘
3
4 # 1.分别取出一年的十二个月:
5 while True:
6 cmd = input('请输入月份:>>')
7 if re.match(r'^(0?[1-9]|1[0-2])$',cmd):
8 print('格式正确')
9 else:
10 print('格式错误')
11
12 # 2.
13 ret =re.match(r'^(0?[1-9]|1[0-2])$','11')
14 print(ret.group())
15
16 # 一个月的31天
17 ret = re.match(r'^((0?[1-9])|((1|2)[0-9])|30|31)$','31')#从头匹配
18 print(ret.group())
19
20 # 匹配QQ号
21 while True:
22 cmd = input('请输入你扣扣号:>>')
23 if re.match(r'^[1-9][0-9]{4,10}$',cmd):
24 print('输入正确')
25 else:
26 print('输入错误')
27
28 # 浮点数
29 ret = re.match(r'-?\d+\.?\d*','21.5')
30 print(ret.group())
数字匹配
4.爬虫练习
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
re模块练习的更多相关文章
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python标准模块--Iterators和Generators
1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
- 理解nodejs模块的scope
描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...
- nodejs模块发布及命令行程序开发
前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...
- 开始学nodejs——net模块
net模块的组成部分 详见 http://nodejs.cn/api/net.html 下面整理出了整个net模块的知识结构,和各个事件.方法.属性的用法 net.Server类 net.Socket ...
随机推荐
- Linux系列—策略路由、ip rule、ip route
早期在管理Linux系统的网络时,常使用ifconfig及route之类的命令,不过如果你准备开始使用Linux强大的基于策略的路由机制,那么,就请不要使用这类工具了,因为这类工具根本无法用于功能强大 ...
- Swagger实践和总结
Swagger学习和实践 最近安装并使用了一下Swagger-ui.Swagger-editor和Swagger-codegen,感觉还不错. Swagger 是一个规范和完整的框架,用于生成.描述. ...
- listView使用小技巧P66--P76
1.设置分割线高度和颜色 android:divider="@android:color/darker_gray" android:dividerHeight="10dp ...
- 照相、从相册上取照片、播放音频、播放本地视频、播放网络视频、MPMoviePlayerController
一.照相.从相册上去照片 1. 先判断是否支持照相功能 *判断当前设备是否支持照相功能,支持返回YES 否则返回NO 注意:模拟器不支持照相功能 把握一个原则只要是物理硬件相关的功能模拟器都不支持 例 ...
- Week07《Java程序设计》第七次作业总结
Week07<Java程序设计>第七次作业总结 1. 本周学习总结 1.1 思维导图:Java图形界面总结 答: 1.2 可选:使用常规方法总结其他上课内容. 答: 1. Swing组件: ...
- Java基础学习-IO流
package IObasics; import java.io.FileWriter; import java.io.IOException; /*IO流 * 通过数据流.序列化和文件系统提供系统输 ...
- 【PL/SQL编程】注释说明
1. 单行注释 由两个连接字符“--”开始,后面紧跟着注释内容. 2. 多行注释 由/*开头, 由*/结尾.
- Electron 使用 Webpack2 打包多入口应用程序
Electron 使用 Webpack2 打包多入口应用程序 接前面一篇文章,前一篇文章中只有一个页面,并且只有一个js文件,所以打包的时候会把那个js打包成一个bundle.js文件.但是假如我们有 ...
- 机器视觉:Convolutional Neural Networks, Receptive Field and Feature Maps
CNN 大概是目前 CV 界最火爆的一款模型了,堪比当年的 SVM.从 2012 年到现在,CNN 已经广泛应用于CV的各个领域,从最初的 classification,到现在的semantic se ...
- js错误Cannot set property 'action' of null
Cannot set property 'action' of null [自己解决问题答案] 应该放到form里面 [网上答案]是页面无法加载完毕执行代码.可以把获取元素等一系列的操作放在 wind ...