题目一

  1. '''
  2. 编写Python脚本,分析xx.log文件,按域名统计访问次数倒序输出
  3. xx.log文件内容如下:
  4. https://www.sogo.com/ale.html
  5. https://www.qq.com/3asd.html
  6. https://www.sogo.com/teoans.html
  7. https://www.bilibili.com/2
  8. https://www.sogo.com/asd_sa.html
  9. https://y.qq.com/
  10. https://www.bilibili.com/1
  11. https://dig.chouti.com/
  12. https://www.bilibili.com/imd.html
  13. https://www.bilibili.com/
  14. 输出:
  15. www.bilibili.com
  16. www.sogo.com
  17. www.qq.com
  18. y.qq.com
  19. dig.chouti.com
  20. '''
  21. import re
  22. domain_dict = {}
  23. with open('./visit.log','r') as fr:
  24. for line in fr.readlines():
  25. pattern = re.compile(r'(http.*?com).*')
  26. domain = pattern.match(line).group(1)
  27. if domain in domain_dict:
  28. domain_dict[domain] = domain_dict[domain]+1
  29. else:
  30. domain_dict[domain] = 1
  31. print(domain_dict)
  32. sorted(domain_dict.items(),key=lambda domain_dict:domain_dict[1],reverse=True)

改进版,优化内存

  1. import re
  2. def buffered_read(file_opened,block_size=4096):
  3. while True:
  4. data = file_opened.read(block_size)
  5. if not data:
  6. break
  7. yield data
  8. domain_dict = {}
  9. with open('./visit.log') as f:
  10. for block in buffered_read(f):
  11. pattern = re.compile(r'https:.*?com')
  12. domain_list = pattern.findall(block)
  13. #domain_dict = [{domain:1} for domain in domain_list]
  14. for key in domain_list:
  15. if key in domain_dict:
  16. domain_dict[key] = domain_dict[key]+1
  17. else:
  18. domain_dict[key] = 1
  19. sorted(domain_dict.items(),key=lambda d:d[1],reverse=True)
  1. # 别人家的方法
  2. #第一种方式
  3. import re
  4. from collections import Counter
  5. with open("xx.log","r",encoding="utf-8") as f:
  6. data=f.read()
  7. res=re.findall(r"https://(.*?)/.*?",data)
  8. dic=Counter(res)
  9. ret=sorted(dic.items(),key=lambda x:x[1],reverse=True)
  10. for k,v in ret:
  11. print(v,k)
  12. #第二种方式
  13. dic={}
  14. with open("xx.log","r",encoding="utf-8") as f:
  15. for line in f:
  16. line=line.split("/")[2]
  17. if line not in dic:
  18. dic[line]=1
  19. else:
  20. dic[line]+=1
  21. ret=sorted(dic.items(),key=lambda x:x[1],reverse=True)
  22. for k,v in ret:
  23. print( v,k)

python -- 题目不看别人的自己写然后比较的更多相关文章

  1. 自学笔记系列:《Python学习手册 第五版》 -写在开始之前

    今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...

  2. 看别人的代码学习的css

    <ul class='y1'>      <li><a href="#">菜单</a></li>      <li ...

  3. 看源码和写demo是一种比较容易提升的方式

    github就是要这么用才行.看别人的源码,就能了解到很多规范,而写demo,就是自己写出自己的代码.莫欺少年穷

  4. Python初学者必看(1)

    python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  5. php实现把数组排成最小的数(核心是排序)(看别人的代码其实也没那么难)(把php代码也看一下)(implode("",$numbers);)(usort)

    php实现把数组排成最小的数(核心是排序)(看别人的代码其实也没那么难)(把php代码也看一下)(implode("",$numbers);)(usort) 一.总结 核心是排序 ...

  6. 之前同事问到的一道python题目

    Python面试题 之前同事问了一道Python题目如下,暂时归类为面试题 题目:把类似'123.456'的字符串转换成浮点型数据 方法一: >>> print '{:.3f}'.f ...

  7. 看了xici有写给孩子的信,maybe我也要写给孩子一些东西了

    看了xici有写给孩子的信,maybe我也要写给孩子一些东西了

  8. 孤荷凌寒自学python第七十五天开始写Python的第一个爬虫5

    孤荷凌寒自学python第七十五天开始写Python的第一个爬虫5 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...

  9. 孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4

    孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...

随机推荐

  1. dotnet core的下载地址 以及sdk和runtime的 version 简单说明

    1. dotnet core 2.1 的下载地址 https://dotnet.microsoft.com/download/dotnet-core/2.1 2. dotnet core 2.2 的下 ...

  2. 影响MapReduce性能的几个因素

    Hadoop MapReduce性能优化影响MapReduce输入数据处理时间的因素很多.其中之一是实现map和reduce函数时使用的算法.其他外部因素也可能影响MapReduce性能.根据我们的经 ...

  3. Delphi+DBGrid导出Excel

    uses ComObj; //DBGrid:指定的DBGrid;SaveFileName:要保存的文件名 function ExportDBGrid(DBGrid: TDBGrid; SaveFile ...

  4. codeforces469B

    Chat Online CodeForces - 469B 问题描述 你和你的朋友经常在网上聊天.你的朋友作息规律每天只会在p个时间段[ai,bi]在线.你作息混乱,假设你在t时刻起床,那么你会在q个 ...

  5. Directory操作

    操作文件夹 CreateDirectory() 创建新文件夹 Delete() 删除 Move() 剪切 Exists() 判断文件夹是否存在 //获取当前目录下所有文件夹的路径 Directory. ...

  6. linux-shell系列8 netstat用法

    1 查看TCP连接状态 netstat -n|awk '{print $6}'|sort|uniq -c|sort -rn netstat -n|awk '/^tcp/ {++S[$NF]};END{ ...

  7. BZOJ4378[POI2015]Logistyka——树状数组

    题目描述 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进行s次操作.每次 ...

  8. CF-Contest339-614

    614A-Link/Cut Tree 比较水,注意64位int仍然可能溢出. #include <cstdio> #include <algorithm> #include & ...

  9. Mvc 前台 匿名对象

    View无法使用 dynamic 报错: object 未包含....的属性 这里需要区别一下:如果dynamic只是简单模型,那么还是可以使用的.例如 dynamic v = new Expando ...

  10. # BZOJ5300 [CQOI2018]九连环 题解 | 高精度 FFT

    今天做了传说中的CQOI六道板子题--有了一种自己很巨的错觉(雾 题面 求n连环的最少步数,n <= 1e5. 题解 首先--我不会玩九连环-- 通过找规律(其实是百度搜索)可知,\(n\)连环 ...