免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2644 | 回复: 10
打印 上一主题 下一主题

实战求教,有关re [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-02 15:11 |只看该作者 |倒序浏览
实现功能:

取"http://192.168.1.161/monitor/bjsjhl-100/net.txt" 的连接数 例如为 25 17这些
再对这些连接数求平均值.

步骤1
from urllib import urlretrieve读取net.txt内容
步骤2把 2009-03-28 0:05:04.67 日期及时间 \TCP Connections:
的内容替换为没有
i=re.sub("TCP Connections:","",i)
步骤3:对取到的数值,求平均值

我的疑惑:有关 re的正则用法我还不太会,

有个地方想请教一下,  2009-03-28 0:05:04.67  用正则通配符怎么表示?

有高手能全部帮忙写全代码最好不过了!




  1. 下面为[url]http://192.168.1.161/monitor/bjsjhl-100/net.txt[/url]的内容
  2. 2009-03-28  0:04:31.35    net static
  3. -----------------------------------------------
  4. 2009-03-28  0:05:04.67 TCP Connections:    25
  5. 2009-03-28  0:15:04.67 TCP Connections:    17
  6. 2009-03-28  0:25:04.67 TCP Connections:    15
  7. 2009-03-28  0:35:04.67 TCP Connections:    15
  8. 2009-03-28  0:45:04.67 TCP Connections:    15
  9. 2009-03-28  0:55:04.67 TCP Connections:    17
  10. 2009-03-28  1:05:04.67 TCP Connections:    22
  11. 2009-03-28  1:15:04.67 TCP Connections:    17
  12. 2009-03-28  1:25:04.67 TCP Connections:    13
  13. 2009-03-28  1:35:04.65 TCP Connections:    18
  14. 2009-03-28  1:45:04.67 TCP Connections:    17
  15. 2009-03-28  1:55:04.67 TCP Connections:    17
  16. 2009-03-28  2:05:04.67 TCP Connections:    23
  17. 2009-03-28  2:15:04.67 TCP Connections:    15
  18. 2009-03-28  2:25:04.67 TCP Connections:    17
  19. 2009-03-28  2:35:04.67 TCP Connections:    15
  20. 2009-03-28  2:45:04.67 TCP Connections:    14
  21. 2009-03-28  2:55:04.67 TCP Connections:    15
  22. 2009-03-28  3:05:04.67 TCP Connections:    21
  23. 2009-03-28  3:15:04.67 TCP Connections:    15
  24. 2009-03-28  3:25:04.67 TCP Connections:    15
  25. 2009-03-28  3:35:04.67 TCP Connections:    15
  26. 2009-03-28  3:45:04.67 TCP Connections:    16
  27. 2009-03-28  3:55:04.67 TCP Connections:    15
  28. 2009-03-28  4:05:04.67 TCP Connections:    19
  29. 2009-03-28  4:15:04.65 TCP Connections:    15
  30. 2009-03-28  4:25:04.65 TCP Connections:    15
  31. 2009-03-28  4:35:04.65 TCP Connections:    13
  32. 2009-03-28  4:45:04.65 TCP Connections:    13
  33. 2009-03-28  4:55:04.65 TCP Connections:    15
  34. 2009-03-28  5:05:04.65 TCP Connections:    19
  35. 2009-03-28  5:15:04.65 TCP Connections:    15
  36. 2009-03-28  5:25:04.64 TCP Connections:    15
  37. 2009-03-28  5:35:04.64 TCP Connections:    13
  38. 2009-03-28  5:45:04.64 TCP Connections:    13
  39. 2009-03-28  5:55:04.64 TCP Connections:    15
  40. 2009-03-28  6:05:04.65 TCP Connections:    21
  41. 2009-03-28  6:15:04.65 TCP Connections:    14
  42. 2009-03-28  6:25:04.65 TCP Connections:    13
  43. 2009-03-28  6:35:04.65 TCP Connections:    15
  44. 2009-03-28  6:45:04.65 TCP Connections:    11
  45. 2009-03-28  6:55:04.64 TCP Connections:    11
  46. 2009-03-28  7:05:04.64 TCP Connections:    19
  47. 2009-03-28  7:15:04.65 TCP Connections:    15
  48. 2009-03-28  7:25:04.65 TCP Connections:    15
  49. 2009-03-28  7:35:04.65 TCP Connections:    17
复制代码

[ 本帖最后由 caesarok 于 2009-4-2 15:19 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-04-02 15:24 |只看该作者
不知道这样行不。。。其实不用那个RE也行的。。。

>>> a="""2009-03-28  0:05:04.67 TCP Connections:    25
... 2009-03-28  0:15:04.67 TCP Connections:    17
... 2009-03-28  0:25:04.67 TCP Connections:    15
... 2009-03-28  0:35:04.67 TCP Connections:    15
... 2009-03-28  0:45:04.67 TCP Connections:    15
... 2009-03-28  0:55:04.67 TCP Connections:    17
... 2009-03-28  1:05:04.67 TCP Connections:    22
... 2009-03-28  1:15:04.67 TCP Connections:    17
... 2009-03-28  1:25:04.67 TCP Connections:    13
... 2009-03-28  1:35:04.65 TCP Connections:    18
... 2009-03-28  1:45:04.67 TCP Connections:    17
... 2009-03-28  1:55:04.67 TCP Connections:    17
... 2009-03-28  2:05:04.67 TCP Connections:    23
... 2009-03-28  2:15:04.67 TCP Connections:    15
... 2009-03-28  2:25:04.67 TCP Connections:    17
... 2009-03-28  2:35:04.67 TCP Connections:    15
... 2009-03-28  2:45:04.67 TCP Connections:    14
... 2009-03-28  2:55:04.67 TCP Connections:    15
... 2009-03-28  3:05:04.67 TCP Connections:    21
... 2009-03-28  3:15:04.67 TCP Connections:    15
... 2009-03-28  3:25:04.67 TCP Connections:    15
... 2009-03-28  3:35:04.67 TCP Connections:    15
... 2009-03-28  3:45:04.67 TCP Connections:    16
... 2009-03-28  3:55:04.67 TCP Connections:    15
... 2009-03-28  4:05:04.67 TCP Connections:    19
... 2009-03-28  4:15:04.65 TCP Connections:    15
... 2009-03-28  4:25:04.65 TCP Connections:    15
... 2009-03-28  4:35:04.65 TCP Connections:    13
... 2009-03-28  4:45:04.65 TCP Connections:    13
... 2009-03-28  4:55:04.65 TCP Connections:    15
... 2009-03-28  5:05:04.65 TCP Connections:    19
... 2009-03-28  5:15:04.65 TCP Connections:    15
... 2009-03-28  5:25:04.64 TCP Connections:    15
... 2009-03-28  5:35:04.64 TCP Connections:    13
... 2009-03-28  5:45:04.64 TCP Connections:    13
... 2009-03-28  5:55:04.64 TCP Connections:    15
... 2009-03-28  6:05:04.65 TCP Connections:    21
... 2009-03-28  6:15:04.65 TCP Connections:    14
... 2009-03-28  6:25:04.65 TCP Connections:    13
... 2009-03-28  6:35:04.65 TCP Connections:    15
... 2009-03-28  6:45:04.65 TCP Connections:    11
... 2009-03-28  6:55:04.64 TCP Connections:    11
... 2009-03-28  7:05:04.64 TCP Connections:    19
... 2009-03-28  7:15:04.65 TCP Connections:    15
... 2009-03-28  7:25:04.65 TCP Connections:    15
... 2009-03-28  7:35:04.65 TCP Connections:    17 "
""
>>> sum=0
>>> for i in a.split('n'):
...     sum+=int(i[-2:])
...
>>> sum
725
>>> avg=sum/len(a.split('n'))
>>> avg
15


不好意思..应该是a.split('\n')


[ 本帖最后由 yjphhw 于 2009-4-2 22:38 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-04-02 16:15 |只看该作者

回复 #2 yjphhw 的帖子


  1. Traceback (most recent call last):
  2.   File "<pyshell#25>", line 2, in <module>
  3.     sum+=int(i[-2:])
  4. ValueError: invalid literal for int() with base 10: 'Co'
复制代码


试了有问题,
另外split('n') , 不对吧.

尽量用RE正则

[ 本帖最后由 caesarok 于 2009-4-2 16:22 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-04-02 16:18 |只看该作者
2009-03-28的日期表达法我配到了


  1.    for i in fg:
  2.         if re.search("[0-9]+[0-9]",i):
  3.             i=re.sub("TCP Connections:","",i)
  4.             i=re.sub("\d{4}-\d{1,2}-\d{1,2}","",i) # 2009-03-31
  5.             i=re.sub("([0-9]{1}|[0-9]{2}):([0-9]{2}):([0-9]{2})\.\d{1,3}","",i)
  6.             li.append(i)
复制代码

[ 本帖最后由 caesarok 于 2009-4-2 16:29 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-04-02 16:29 |只看该作者
filename = 'data.txt'
fobj = open(filename,'r')
lst=[]
for eachLine in fobj:
    lst.append(int(eachLine[-3:]))
sum=0
for i in lst:
    sum+=i
print sum/len(lst)

论坛徽章:
0
6 [报告]
发表于 2009-04-02 17:11 |只看该作者
说实话你的这个东西用正则来做,有点 杀鸡用牛刀. str直接搞定了.

论坛徽章:
0
7 [报告]
发表于 2009-04-02 17:14 |只看该作者
>>> import re
>>> dlist = []
>>> for i in file("net.txt"):
...     i = i.strip()
...     dlist += re.findall(r'\d+$', i)
>>> sum([int(i) for i in dlist])/len(dlist)
15

论坛徽章:
0
8 [报告]
发表于 2009-04-02 17:40 |只看该作者


  1. 2009-03-30  2:55:04.84 TCP Connections:    153
  2. 2009-03-30  3:05:04.75 TCP Connections:    141
  3. 2009-03-30  3:15:04.75 TCP Connections:    148
  4. 2009-03-30  3:25:04.75 TCP Connections:    143
  5. 2009-03-30  3:35:04.73 TCP Connections:    130
  6. 2009-03-30  3:45:05.39 TCP Connections:    127
  7. 2009-03-30  3:55:04.76 TCP Connections:    145
  8. 2009-03-30  4:05:04.84 TCP Connections:    145
  9. 2009-03-30  4:15:04.84 TCP Connections:    131
  10. 2009-03-30  4:25:04.78 TCP Connections:    131
  11. 2009-03-30  4:35:04.82 TCP Connections:    127
  12. 2009-03-30  4:45:04.93 TCP Connections:    138
  13. 2009-03-30  4:55:04.82 TCP Connections:    132
  14. 2009-03-30  5:05:04.81 TCP Connections:    132



  15. 2009-04-02 10:25:04.82 TCP Connections:    195
复制代码

像这样的内容有点麻烦.

[ 本帖最后由 caesarok 于 2009-4-2 19:51 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-04-02 18:42 |只看该作者
原帖由 caesarok 于 2009-4-2 17:40 发表


2009-03-30  2:55:04.84 TCP Connections:    153
2009-03-30  3:05:04.75 TCP Connections:    141
2009-03-30  3:15:04.75 TCP Connections:    148
2009-03-30  3:25:04.75 TCP Connections:    1 ...


re.findall(r'\d+$',xxx)就好了

论坛徽章:
0
10 [报告]
发表于 2009-04-02 19:46 |只看该作者

回复 #9 yaksavage 的帖子

>>>sum([int(i) for i in dlist])/len(dlist)


Traceback (most recent call last):
  File "<pyshell#111>", line 1, in <module>
    sum([int(i) for i in dlist])/len(dlist)
TypeError: 'int' object is not callable


有错,

另外 re.findall(r'\d+$',xxx)r'\d+$' 能否解析一下什么意思,我不太明白,多谢,

[ 本帖最后由 caesarok 于 2009-4-2 19:50 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP