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])$','')
14 print(ret.group())
15
16 # 一个月的31天
17 ret = re.match(r'^((0?[1-9])|((1|2)[0-9])|30|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模块的小练习的更多相关文章
- pandas模块实现小爬虫功能-转载
pandas模块实现小爬虫功能 安装 pip3 install pandas 爬虫代码 import pandas as pd df = pd.read_html("http://www.a ...
- Python 工匠:一个关于模块的小故事
前言 模块(Module)是我们用来组织 Python 代码的基本单位.很多功能强大的复杂站点,都由成百上千个独立模块共同组成. 虽然模块有着不可替代的用处,但它有时也会给我们带来麻烦.比如,当你接手 ...
- os模块学习小随笔
os模块为python解释器与操作系统交互的接口 os.popen() -------Open a pipe to or from command. The return value is an ...
- nodejs .http模块, cheerio模块 实现 小爬虫.
代码: var http = require("http"); var cheerio = require("cheerio"); var url = 'htt ...
- 金融新手投标模块布局小Demo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 什么是英特尔® Edison 模块?
英特尔® Edison 模块 是一种 SD 卡大小的微型计算芯片,专为构建物联网 (IoT) 和可穿戴计算产品而设计. Edison 模块内含一个高速的双核处理单元.集成 Wi-Fi*.蓝牙* 低能耗 ...
- 微信小程序导航:官方工具+精品教程+DEMO集合(1月7更新)
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug ...
- 轻量级模块化开发框架 Hasor 核心模块 v0.0.2 发布
首先引用Wiki的介绍一下Hasor: “Hasor是一款开源框架.它是为了解决企业模块化开发中复杂性而创建的.Hasor遵循简单的依赖.单一职责,在开发多模块企业项目中更加有调理.然 而Ha ...
- [自娱自乐] 2、超声波测距模块DIY笔记(二)
前言 上一节我们已经大致浏览下目前销售的超声波测距模块同时设计了自己的分析电路,这次由于我买的电子元件都到了,所以就动手实验了下!至写该笔记时已经设计出超声波接收模块和超声波发射模块,同时存在超声波发 ...
随机推荐
- HTML Img标签 src为网络地址无法显示图片问题解决(https)
举例说明: <img src="https://pic.cnblogs.com/avatar/1549846/20191126100502.png" alt="加载 ...
- react中递归生成列表
import React, {Component} from 'react'; import { Menu, Icon } from 'antd'; import {Link} from 'react ...
- WebHook钩子
webhooks整理码云创建远程仓库生成公钥 服务器配置webhooks #!/bin/bashecho ""#输出当前时间date --date='0 days ago' &qu ...
- Leetcode之广度优先搜索(BFS)专题-127. 单词接龙(Word Ladder)
Leetcode之广度优先搜索(BFS)专题-127. 单词接龙(Word Ladder) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...
- web学习(2019-10)
@“fuzz一下”:所有注入爆破题/其他题,必fuzz 在安全测试中,模糊测试(fuzz testing)是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型 模糊测试(fuzz tes ...
- 通达信金融终端_尘缘整合_V7.12
http://pan.baidu.com/s/1gvtPO http://pan.baidu.com/s/1xqrk6 通达信金融终端_尘缘整合_V7.12
- Python中的xrld模块
一. 什么是xrld模块 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 二. 使用介绍 . empty(空的), number, ...
- Vue路由守卫之组件内路由守卫
beforeRouteEnter,进入路由前.需要注意这里不能使用this,因为我们使用的是进入路由之前,那会组件还没创建,得不到this这个属性,所有我们只能使用过vm异步语句来让 ...
- react 不同环境配置不同域名
npm eject 先将配置文件暴露出来 将scripts中的build文件复制一份,改名为你需要的名字 将其中的 process.env.NODE_ENV 赋值为你需要的环境 在package.js ...
- N1试卷常考词汇总结
免れる まぬがれる 免去,幸免 軽率 けいそつ 轻率,草率 捩れる ねじれる 拧劲儿,扭歪,弯曲 裂ける さける 裂开,破裂 避ける さける 躲避,避开 つまむ 挟,捏,掐 追及 ついきゅう 追上.追 ...