2009-12-19 45 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

它可以,如果你先編譯正則表達式可以大爲改善。