大虾救命啊,我快疯了,这是怎么回事

大虾救命啊,我快疯了,这是怎么回事

#!c:\python24\python.exe
# ftp.py

import sys
import re

regx = "ex\d\d\d\d\d\d.log"
file = open("huhe.doc","r")

for str in file.readlines():
    print "hahha"

    if re.search(regx,str):
        print re.search(regx,str).group()

huhe.doc文件中有很多行,每一行都有匹配字符串,可是为什么只打印出第一行中的匹配字符串,就连“haha”也只打印一次。
拜托各位了,事关重大

建议你先把:

   if re.search(regx,str):
        print re.search(regx,str).group()

先注释掉,看一看每行是否可以打印出来。
你这个写法根本是错误的(你这个是shell的写法)

应该是:

while True:
  str=f.readline()
  if len(str)==0 :
    break
  processing str...


[Copy to clipboard] [ - ]
CODE:
#!c:\python24\python.exe

import re

regx = re.compile(r"ex\d\d\d\d\d\d.log")

for str in open("huhe.doc","r"):
    print "hahha"
    ...



QUOTE:
原帖由 channel5 于 2006-1-18 14:55 发表
你这个写法根本是错误的(你这个是shell的写法)

应该是:

while True:
  str=f.readline()
  if len(str)==0 :
    break
  processing str...

我晕,你也先运行一下代码再说话啊

如果只打印了一次,那可能你文件只有一行,虽然很多行看起来,但是没有回车换行,编辑器自动折行了。re可能错,但文件操作总不会的,你确定文件名对了吗?
你确定 .doc 是多行的文本文件吗? 不会是二进制的吧。
其实你可以for str in file.readlines(): 换成 for str in file:
先把    if re.search(regx,str):
        print re.search(regx,str).group()
注释掉看看haha是不是还是输出一次吧
难道LZ挂了?这么长时间没冒泡了.
打开文件时,把"r" 换成 "rb" 应该就可以了