• Python 正则匹配(re)组的应用


    昨天刚看完re的一小部分,今天刚好有个任务需要用到正则。

    需求是:一张表的text字段存了很多内容。里面包括发给用户的邮件内容,已经用户的邮箱等等。现在需要查找出发送给哪些email以及多少封邮件。需要匹配的
    是 <a href="mailto:AAA@DDD.com">AAA@DDD.com</a>',把 “AAA@DDD.com”取出来。

    用下面的脚本:

    #!/bin/env python
    # -*- encoding: utf-8 -*-
    #-------------------------------------------------------------------------------
    # Name:        find_email.py
    # Purpose:     从文本中正则匹配数据
    # Author:      zhoujy
    # Created:     2012-10-29
    # update:      2012-10-29
    #-------------------------------------------------------------------------------
    import re
    import fileinput
    import MySQLdb
    
    conn = MySQLdb.connect(host='192.168.1.20',user='zjy',passwd='123456',db='emd',port=3308)
    query = '''select content from  message e JOIN mesInfo m ON e.id=m.id WHERE m.infoType=1 and date_format(e.sendTime, "%y-%m")="12-09"'''
    cursor= conn.cursor()
    cursor.execute(query)
    item = cursor.fetchall()
    
    pat = re.compile(r'<a href="mailto:(.*)"')
    Finddict = {}
    
    #for line in fileinput.input():
    for line in item:
        line=str(line)
        m = pat.search(line)
        if m:
    #        print m.group(1)
            Finddict[m.group(1)] = Finddict.get(m.group(1),0)+1
    List = sorted(Finddict.items(),key=lambda i: -i[1])
    for kv in List:
        print kv[0] + ' : ' + str(kv[1])

    结果:

    123456@qq.com : 11
    123456@126.com : 10
    123456@139.com : 10
    123456@yeah.net : 9
    123456@cmc.edu.cn : 7
    123456@sina.com : 7
    123456@fudan.edu.cn : 6
    .....

    另一个应用:
    用正则表达式将网页代码中所有<img src="XXX"> 形式中的XXX的字符串提取出

    #!/usr/bin/env python
    #-*-encoding:utf8-*-
    #用正则表达式将所有<img src="XXX"> 形式中的XXX的字符串提取出
    
    import sys
    import urllib2
    import re
    
    def get_html(url):
        data = urllib2.urlopen(url).read()
        pat  = re.compile(r'<img src="(\S*)"') #正常情况只需要写成:r'<img src="(.*)"' ,但有些后面会带有一些长宽等属性,所以需要去除空白字符
        imgs = pat.findall(data)
        for i in imgs:
            print i
    if __name__ == '__main__':
        url = sys.argv[1]
        get_html(url)

    效果:

    zhoujy@m2:~$ python get_url.py http://www.baidu.com
    http://www.baidu.com/img/bdlogo.gif
    http://www.baidu.com/cache/global/img/gs.gif


    知识点:

    re模块,匹配对象和组。--- < Python 基础教程(第2版) P191~P200 >

    ~~~~~~~~~~~~~~~ 万物之中,希望至美 ~~~~~~~~~~~~~~~
  • 相关阅读:
    回答自己之前的提问!
    阅读《构建之法》第13-17章
    阅读《构建之发》10-12章
    阅读《构建之法 》8,9,10章
    Practise 5.2测试与封装(黑白盒
    Practice5.1 测试与封装5.1
    Practice4 阅读《构建之法》6-7章
    Practice3 阅读《构建之法》1-5章
    “做汉堡”之评价我的队友
    Practice2 结对子之“小学四则运算”
  • 原文地址:https://www.cnblogs.com/zhoujinyi/p/2745004.html
Copyright © 2020-2023  润新知