2009-12-19 52 views
0

所以这里的问题我有,印刷生产线在文件

我能找到的搜索词在我的文件,但在此时此刻,我只能打印出搜索词中就行了。(感谢问题)早些时候由人员发布=))。但是在搜索字词之后,我无法打印出文件末尾的所有行。这里是我到目前为止的编码: -

​​

在此先感谢!

+0

也许检查你的同学发布的其他问题?像http://stackoverflow.com/questions/1929432或可能http://stackoverflow.com/questions/1927276? – 2009-12-19 10:23:28

回答

0

您可以设置布尔标志,例如“found = True”; 并检查发现的== True,如果是这样,则打印该行。下面

代码:

search_term = r'\b%s\b' % search_term 

found = False; 
for line in open(f, 'r'): 
     if found==True: 
      print line, 
     elif re.match(search_term, line): 
      found = True; 
      print line, 

为了解释这一点:随着布尔标志要添加一些状态到您的代码来修改其功能。你想要你的代码做什么取决于你是否在你的文件中找到了某行文本,所以表示这种二进制状态的最好方法是(我找到了这行还是找不到它?)是用布尔变量像这样,然后让代码根据变量的值做不同的事情。

另外,elif只是else if的缩写。

search_term_regex = re.compile(r'\b%s\b' % search_term) 

found = False 
for line in open(f): 
    if not found: 
     found = bool(search_term_regex.findall(line)) 
    if found: 
     print line, 

那么你就不重复打印线:

1

它可以,如果你先编译正则表达式可以大为改善。