美文网首页python百例
94-re练习:模式匹配进阶写法

94-re练习:模式匹配进阶写法

作者: 凯茜的老爸 | 来源:发表于2018-08-04 13:45 被阅读1次
import re
from collections import Counter  # Counter对象是有序的,字典无序

class CountPatt:
    def __init__(self, fname):
        self.fname = fname

    def count_patt(self, patt):
        cpatt = re.compile(patt)
        result = Counter()

        with open(self.fname) as fobj:
            for line in fobj:
                m = cpatt.search(line)  # 如果匹配不到,返回None
                if m:
                    result.update([m.group()])

        return result


if __name__ == '__main__':
    c = CountPatt('access_log')
    ip = '^(\d+\.){3}\d+'
    br = 'Firefox|MSIE|Chrome'
    a = c.count_patt(ip)
    print(a)
    print(a.most_common(3))  # 访问量最大的前三名
    print(c.count_patt(br))

相关文章

  • 94-re练习:模式匹配进阶写法

  • perl命令行处理sequence数据入门

    原始数据(注释信息) 命令行中 cut 的用法 命令行中的模式匹配,去除冗余信息 模式匹配进阶 观察添加命令: p...

  • swift 模式匹配的各种写法

    更详细的解释: http://appventure.me/2015/08/20/swift-pattern-mat...

  • 模式匹配

    模式匹配之字符串 模式匹配之匹配类型 模式匹配之匹配数组、元组、集合 模式匹配之样例类 模式匹配之偏函数

  • 进阶篇:贪婪模式 (9-2)

    饥人谷学习进阶第 9 天 贪婪模式与非贪婪模式 量词在默认下是尽可能多的匹配的,也就是所谓的贪婪模式 举例: 运行...

  • 【Python进阶】2.8多行匹配模式

    2.8 多行匹配模式 问题 你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配。 解决方案 这个问...

  • ES6学习第二节:解构赋值

    数组解构赋值 这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值 对象解构赋值 数组的...

  • es6 数组的解构赋值

    本质上,数组的解构赋值这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。如果解构不成...

  • 变量的结构赋值

    数组的结构赋值 上面的这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值,如果变量找不...

  • 2020-03-09 es6 变量解构

    1.数组的解构赋值 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。 如果...

网友评论

    本文标题:94-re练习:模式匹配进阶写法

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