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模块的小练习的更多相关文章

  1. pandas模块实现小爬虫功能-转载

    pandas模块实现小爬虫功能 安装 pip3 install pandas 爬虫代码 import pandas as pd df = pd.read_html("http://www.a ...

  2. Python 工匠:一个关于模块的小故事

    前言 模块(Module)是我们用来组织 Python 代码的基本单位.很多功能强大的复杂站点,都由成百上千个独立模块共同组成. 虽然模块有着不可替代的用处,但它有时也会给我们带来麻烦.比如,当你接手 ...

  3. os模块学习小随笔

    os模块为python解释器与操作系统交互的接口 os.popen()   -------Open a pipe to or from command. The return value is an ...

  4. nodejs .http模块, cheerio模块 实现 小爬虫.

    代码: var http = require("http"); var cheerio = require("cheerio"); var url = 'htt ...

  5. 金融新手投标模块布局小Demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 什么是英特尔® Edison 模块?

    英特尔® Edison 模块 是一种 SD 卡大小的微型计算芯片,专为构建物联网 (IoT) 和可穿戴计算产品而设计. Edison 模块内含一个高速的双核处理单元.集成 Wi-Fi*.蓝牙* 低能耗 ...

  7. 微信小程序导航:官方工具+精品教程+DEMO集合(1月7更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug ...

  8. 轻量级模块化开发框架 Hasor 核心模块 v0.0.2 发布

    首先引用Wiki的介绍一下Hasor:     “Hasor是一款开源框架.它是为了解决企业模块化开发中复杂性而创建的.Hasor遵循简单的依赖.单一职责,在开发多模块企业项目中更加有调理.然 而Ha ...

  9. [自娱自乐] 2、超声波测距模块DIY笔记(二)

    前言 上一节我们已经大致浏览下目前销售的超声波测距模块同时设计了自己的分析电路,这次由于我买的电子元件都到了,所以就动手实验了下!至写该笔记时已经设计出超声波接收模块和超声波发射模块,同时存在超声波发 ...

随机推荐

  1. git(程序员的时光机)

    git 是什么 最强大的分布式版本控制系统,没有之一 版本控制: 完成一项任务,最终的成果可能是经过中间修修修改n次得到的,在这n个版本之间的切换就叫版本控制. 集中式的版本控制svn,cvs缺点: ...

  2. Leetcode之动态规划(DP)专题-53. 最大子序和(Maximum Subarray)

    Leetcode之动态规划(DP)专题-53. 最大子序和(Maximum Subarray) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. ...

  3. python 实例化 类方法 静态方法 成员变量 实例方法 等调用

    1.参考代码如下 # coding:utf-8 class student: # 成员变量 ok = None like = '八戒你瘦了' # 实例方法 def __init__(self): # ...

  4. 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(一)

    要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分.不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI.US ...

  5. selenium-server--chromedriver环境

    x 准备环境: 1.selenium-server-standalone-3.8.1.jar 2.chromedriver.exe 一.查看本地电脑chrome浏览器版本信息: 二.访问代理地址:ht ...

  6. SpringMVC必备知识点汇总

    1.参数接收 1.1 数组 1.2 文件上传 1.2.1 单个文件上传 1.2.2 多个文件上传 1.2.3 文件上传时,携带其他数据 2.参数校验 参数校验:https://www.cnblogs. ...

  7. pikachu-SQL注入

    参考网址: http://www.mamicode.com/info-detail-2795438.html

  8. mysql大数据量插入参考

    Mysql 千万数据10秒批量插入只需三步第一步:配置my.ini文件文件中配置bulk_insert_buffer_size=120M 或者更大将insert语句的长度设为最大.Max_allowe ...

  9. .Net Core 3.0使用Grpc进行远程过程调用

    因为.Net Core3.0已经把Grpc作为一等臣民了,作为爱好新技术的我,当然要尝鲜体验一下了,当然感觉是Grpc作为跨语言的产品做的相当好喽,比起Dubbo这种的,优势和劣势还是比较明显的. 我 ...

  10. bash脚本测试总结

    bash脚本测试总结   跟踪脚本的执行 可以让bash打印出你脚本执行的过程中的所有语句.这很简单,只需要使用bash的-x选项就可以做到,下面让我们来看一下.   下面的这段脚本,先是输出一个问候 ...