美文网首页
统计一个文件中某些字段出现的次数

统计一个文件中某些字段出现的次数

作者: 隔壁python | 来源:发表于2019-07-11 20:08 被阅读0次

要求:有一个access_log的日志文件(函数式编程实现)

  • 统计出有那些ip地址访问本机web,且访问次数是多少?
  • 统计出Chrome,MSIE,Firefox访问的次数
import re        #导入正则模块

 #定义一个函数,参数fname是文件名,patt是需要匹配的字段

def count_patt(fname, patt):
    patt_dict = {}        #定义一个空字典用于保存匹配的结果
#调用re.compile模块可以提前将需要匹配的字段编译
    cpatt = re.compile(patt)  
#使用with打开文件的好处是结束后自动关闭文件
    with open(fname) as fobj:      #打开文件为一个文件对象
        for line in fobj:        #遍历此文件对象
            m = cpatt.search(line)  #m保存匹配的结果
            if m:          #如果m有值,条件成立
#re.group可以获得使用search或match匹配的内容
                key = m.group()    
#如果匹配的内容在字典中有就加1,否则patt_dict[key]=1
                patt_dict[key] = patt_dict.get(key, 0) + 1
    return patt_dict    #遍历完之后返回字典
if __name__ == '__main__':
    fname = '/tmp/access_log'      #要统计的文件
    ip = '(\d+\.){3}\d|^... '                #匹配ipv4和ipv6的地址
    br = 'Firefox|Chrome|MSIE'     #匹配浏览器
    ip_count = count_patt(fname, ip)    #调用此函数
    br_count = count_patt(fname, br)
    print(ip_count)
    print(br_count)
    

access_log为httpd的访问日志,内容格式为:

172.40.50.116 - - [03/Dec/2017:15:29:37 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1" 404 238 "http://172.40.50.116/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0"

匹配之后得到的结果为:

{'172.40.58.1': 26, '127.0.0.1': 121, '192.168.4.2': 103......}
{'Chrome': 24, 'Firefox': 870, 'MSIE': 391}

此函数可以实现多个字段的匹配,但是需要写相应的正则来匹配

相关文章

  • 统计一个文件中某些字段出现的次数

    要求:有一个access_log的日志文件(函数式编程实现) 统计出有那些ip地址访问本机web,且访问次数是多少...

  • awk练习题

    1 、统计/etc/fstab 文件中每个文件系统类型出现的次数 5:统计netstat -tan 中各状态的次数...

  • Python处理字符串文件

    有一个文本文件 1.统计文件里每个字母和数字出现的次数,过滤符号 2.统计g出现的次数,不区分大小写

  • Flink批处理(Batch离线批处理)案例开发

    案例需求:统计一个文件中的单词出现的总次数,并且把结果存储到文件中。Java代码实现如下。 源文件如图: 结果文件如图:

  • Spark学习笔记02-Spark 分别使用Java和Scala

    一、需求描述 需求:文件中存储的各种各样的单词,统计在这些文件中每个单词的出现次数。比如下面txt文件,统计各个单...

  • MapReduce学习笔记

    wordcount: 统计文件中每个单词出现的次数需求:1) 文件内容小:shell2)文件内容很大:TB GB ...

  • 2020-11-09-Scala-29(IO)

    对这个文件元素的处理(统计字母出现的字数,单词出现的次数)

  • 统计序列中元素出现的频度

    方法一、统计列表中每个元素出现的次数 思考:找出来出现频度最高的元素及次数? 方法二、统计列表中每个元素出现的次数...

  • Python统计单词出现的次数

    -摘抄自网络作者:FOOFISH-PYTHON之禅 题目:统计一个文件中每个单词出现的次数,列出出现频率最多的5个...

  • 统计字符串

    一:统计每个字符出现的次数 二:统计出现次数相同的是哪几项 三:统计出现次数最多的字符 四:统计指定字符出现的次数...

网友评论

      本文标题:统计一个文件中某些字段出现的次数

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