re.search 为什么同样的只匹配部分
本帖最后由 aingwen 于 2014-11-05 11:07 编辑文本1.log内容如下:
218.94.54.202=====MAC:0007E95E4B00 ========
220.179.174.91===== MAC:000B2F1E1470 =====
20 218.75.35.85 MAC:0007E90DB590
28 119.41.26.229 MAC:0007E90DE5AF
要得到的结果是
MAC:0007E95E4B00
MAC:000B2F1E1470
MAC:0007E90DB590
MAC:0007E90DE5AF
我写的脚本test.py如下:#!/usr/bin/env python
import re
import os
f = open("1.log",'r')
for line in (f.readlines()):
k=re.search(r'(MAC:)\w+',line)
print k.group(0)
f.close()MAC:0007E95E4B00
MAC:000B2F1E1470
Traceback (most recent call last):
File "test.py", line 8, in ?
print k.group(0)
AttributeError: 'NoneType' object has no attribute 'group'
不明白这是为什么后面那两行里的不能打印出来?求大神指点
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
text='''
218.94.54.202=====MAC:0007E95E4B00 ========
220.179.174.91===== MAC:000B2F1E1470 =====
20 218.75.35.85 MAC:0007E90DB590
28 119.41.26.229 MAC:0007E90DE5AF
'''
print '\n'.join(re.findall('MAC:\w+',text))
for line in text.strip().split('\n'):
if not line.strip():
continue
#print line
print re.search(r'(MAC:)\w+',line).group(0)
回复 2# whitelotus19 print '\n'.join(re.findall('MAC:\w+',text))这个不错,无论中间是空行还是无匹配的对象都能得到正确结果,反而用group() 只要有一行没有匹配的内容它就是空值就报错不继续执行了,非常感谢大神的两个方法,学习了 回复 1# aingwen
中间有空行,加个判断就行了for line in (f.readlines()):
k=re.search(r'(MAC:)\w+',line)
if k is not None:
print k.group(0) 回复 3# aingwen
互相学习:emn35: 这个不错,非常感谢大神的方法,学习了~ {:2_168:}
回复 2# whitelotus19
页:
[1]