免费注册 查看新帖 |

Chinaunix

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

python:正则表达式 [复制链接]

论坛徽章:
1
子鼠
日期:2014-08-28 13:27:13
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-29 18:31 |只看该作者 |倒序浏览
本帖最后由 chosen86 于 2014-08-29 19:51 编辑

问一个小问题,有一个文本每一行都是下边这样的格式,想通过正则表达式把第一列时间提出来,用re.findall(r'表达式',text)[0],求问表达式怎么写?谢谢!
14/Jul/2014:15:23:13  10.6.99.165 test1
14/Jul/2014:16:29:14  10.6.99.162 test2
14/Jul/2014:17:25:15  10.6.99.123 test3
。。。
。。。
。。。
。。。
(若干行)

论坛徽章:
1
子鼠
日期:2014-08-28 13:27:13
2 [报告]
发表于 2014-08-29 18:46 |只看该作者
re.findall(r'(?<=).*?(?= )',text)[0]这样对吗?

论坛徽章:
1
子鼠
日期:2014-08-28 13:27:13
3 [报告]
发表于 2014-08-29 19:03 |只看该作者
在线等,挺急的

论坛徽章:
1
子鼠
日期:2014-08-28 13:27:13
4 [报告]
发表于 2014-08-29 19:37 |只看该作者
求助求助。。。。

论坛徽章:
1
子鼠
日期:2014-08-28 13:27:13
5 [报告]
发表于 2014-08-29 20:41 |只看该作者
求助求助。。。。

论坛徽章:
0
6 [报告]
发表于 2014-08-29 21:14 |只看该作者
这样可以吧
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. import re

  4. def fa():
  5.     text='''
  6.     14/Jul/2014:15:23:13  10.6.99.165 test1
  7.     14/Jul/2014:16:29:14  10.6.99.162 test2
  8.     14/Jul/2014:17:25:15  10.6.99.123 test3
  9.     。。。
  10.     。。。
  11.     。。。
  12.     。。。
  13.     '''
  14.     pat=r'(\d\d/\w+/\d{4}:\d\d:\d\d:\d\d)\s+.*'
  15.     print '\n'.join(re.findall(pat,text))

  16. fa()
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2014-08-30 09:17 |只看该作者
  1. >>> import re
  2. >>> s = '14/Jul/2014:15:23:13  10.6.99.165 test1'
  3. >>> re.findall(r'^[^ ]+',s)[0]
  4. '14/Jul/2014:15:23:13'
  5. >>>
复制代码

论坛徽章:
0
8 [报告]
发表于 2014-08-30 09:35 |只看该作者
不用正则表达式也可以啊
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. text='''
  4. 14/Jul/2014:15:23:13  10.6.99.165 test1
  5. 14/Jul/2014:16:29:14  10.6.99.162 test2
  6. 14/Jul/2014:17:25:15  10.6.99.123 test3
  7. '''

  8. print '\n'.join([x.split(' ')[0] for x in text.split('\n')])
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-08-30 09:36 |只看该作者
不用正则表达式也可以啊
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. text='''
  4. 14/Jul/2014:15:23:13  10.6.99.165 test1
  5. 14/Jul/2014:16:29:14  10.6.99.162 test2
  6. 14/Jul/2014:17:25:15  10.6.99.123 test3
  7. '''

  8. print '\n'.join([x.split(' ')[0] for x in text.split('\n')])
复制代码

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
10 [报告]
发表于 2014-08-30 10:22 |只看该作者
如此规范的数据,用毛的正则啊。
  1. In [10]: s = '''14/Jul/2014:15:23:13  10.6.99.165 test1
  2.     ...: 14/Jul/2014:16:29:14  10.6.99.162 test2
  3.     ...: 14/Jul/2014:17:25:15  10.6.99.123 test3'''

  4. In [11]: [line.split(maxsplit = 1)[0] for line in s.splitlines()]
  5. Out[11]: ['14/Jul/2014:15:23:13', '14/Jul/2014:16:29:14', '14/Jul/2014:17:25:15']

  6. In [12]:
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP