一个小问题,有人知道吗

一个小问题,有人知道吗

grep "foo" afile.txt

这样的功能用python怎么写
date = open('afile.txt').readlines()
for i in date:
    if 'foo' in i:
        print i
非常感谢lvscar !

现在有个新问题,其实我要找的是foo后面的一串数字,文件是这样的
05/29 18:00:01        呼叫排队:          898160;contactid=273481532
05/29 18:00:07        呼叫排队:     89896955000;contactid=273481528
05/29 18:00:09        呼叫排队:          898160;contactid=273481562
05/29 18:00:09        呼叫排队:          898160;contactid=273481565
05/29 18:00:36        呼叫排队:          898160;contactid=273481630
05/29 18:00:44        呼叫排队:     89896955000;contactid=273481703
05/29 18:01:12        呼叫排队:       898969988;contactid=273481800

要把contactid=后面的那串数字提出来,做成一个连接。
现在可以用了python的re,但匹配到第一个就不往下走了。
text = open("c:\1","r")
m = re.compile("(?<=contactid=).*").search(text)
>>> m.group(0)
'273481532'
>>> m.group(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
IndexError: no such group


[Copy to clipboard] [ - ]
CODE:
file = open(r'C:\1','r')
lines = [ l.strip() for l in file.readlines()]
file.close()

pattern = re.compile(".*;contactid=(\d*)$")

contactids = []
for line in lines:
    if pattern.match(line):
        contactids.append(pattern.search(line).group(1))

print contactids



QUOTE:
原帖由 wolfg 于 2006-5-30 16:15 发表
[code]
file = open(r'C:\1','r')
lines = [ l.strip() for l in file.readlines()]
file.close()

pattern = re.compile(".*;contactid=(\d*)$")

contactids = []
for line in lines:
    i ...

版主正解 英明万世
多谢版主。

我是把python放在iis里,然后用ie来分析日志用的。

现在弄好了,不过实在是太慢了。
不需要用正则表达式,字符串的split方法就可以搞定:

>>> a="05/29 18:00:01        呼叫排队:          898160;contactid=273481532"
>>> a.split("=")
['05/29 18:00:01        \xba\xf4\xbd\xd0\xc5\xc5\xb6\xd3:          898160;contactid', '273481532']
>>> a.split("=").pop()
'273481532'
>>>
如果数字是定长的话:这样用
a="05/29 18:00:01        呼叫排队:          898160;contactid=273481532"
print a[-9:]