re模块

作者: _Caesar | 来源:发表于2018-04-23 00:20 被阅读55次

匹配标签

import re
ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','<h1>hello</h1>')
#还可以在分组中利用?P<name>的形式给分组起名字
#获取的匹配结果可以直接用group('名字')拿到对应的值
print(ret.group())
print(ret.group('tag_name'))
# -------------------------
ret = re.search(r'<(\w+)>\w+</\1>','<h1>hello</h1>')
#如果不给分组起名字,也可以用\序号来找到对应的组,表说要找的内容和前面的组的内容一致
#获取的匹配结果可以直接用group(序号)拿到对应的值
print(ret.group())
print(ret.group(1))

匹配整数

import re
ret = re.findall(r'\d+',"1-2*(60+(-40.35/5)-(-4*3))")
print(ret)
import re
ret = re.findall(r'-?\d+\.\d*|(-?\d+)',"1-2*(60+(-40.35/5)-(-4*3))")
print(ret)
ret.remove('')
print(ret)
数字匹配

数字匹配

# 3.数字匹配
# 1.匹配一段文本中的每行的时间字符串,比如’1990-07-12‘

# 1.分别取出一年的十二个月:
while True:
    cmd = input('请输入月份:>>')
    if re.match(r'^(0?[1-9]|1[0-2])$',cmd):
        print('格式正确')
    else:
        print('格式错误')

# 2.
ret =re.match(r'^(0?[1-9]|1[0-2])$','11')
print(ret.group())

# 一个月的31天
ret = re.match(r'^((0?[1-9])|((1|2)[0-9])|30|31)$','31')#从头匹配
print(ret.group())

# 匹配QQ号
while True:
    cmd = input('请输入你扣扣号:>>')
    if re.match(r'^[1-9][0-9]{4,10}$',cmd):
        print('输入正确')
    else:
        print('输入错误')

# 浮点数
ret = re.match(r'-?\d+\.?\d*','21.5')
print(ret.group())
数字匹配

爬虫练习

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

相关文章

  • 21.Python之re模块

    Python之re模块 re模块介绍re 模块使 Python 语言拥有全部的正则表达式功能。 re模块的内置方法...

  • python(学会正则走天下)

    python通过re模块来实现。本篇文章着重对Python的RE进行介绍re 模块首先通过 re.compiler...

  • Python 脚本之统计基因组文件中染色体长度及N碱基数目

    模块介绍 re模块 re模块是Python中的正则表达式调用模块,在python中,通过将正则表达式内嵌集成re模...

  • 遇见正则表达式(2)

    昨天我已经埋好了伏笔,今天来重点学习re模块。 学习re模块,主要是学习该模块的几个重要的方法。 re.finda...

  • 小猪的Python学习之旅 —— 3.正则表达式

    re模块 Python中通过re模块使用正则表达式,该模块提供的几个常用方法: 1.匹配 re.match(pat...

  • python05-正则表达式(二)

    正则表达式(二) re模块(regex) python中没有正则表达式的函数,需要引入内置的re模块 re模块方法...

  • re模块

    匹配标签 匹配整数 数字匹配 爬虫练习

  • re模块

    参考资料https://www.ibm.com/developerworks/cn/opensource/os-c...

  • re 模块

    1、Python中的模块有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include...

  • re模块

    1、re.match函数 原型:match(pattern, string, flags=0) 参数:patter...

网友评论

      本文标题:re模块

      本文链接:https://www.haomeiwen.com/subject/jkbqlftx.html