2015-12-15 32 views
0
import os 
searchquery = 'word' 
with open('Y:/Documents/result.txt', 'w') as f: 
for filename in os.listdir('Y:/Documents/scripts/script files'): 
    with open('Y:/Documents/scripts/script files/' + filename) as currentFile: 
     for line in currentFile: 
      if searchquery in line: 
       start = line.find(searchquery) 
       end = line.find("R") 
       result = line[start:end] 
       print result 
       f.write(result + ' ' +filename[:-4] + '\n') 

现在,这种方式很适合搜索“单词”并在单词后面打印所有内容,直到“R”提供它位于同一行上。但是,如果“R”在线上,它将不会打印之前的东西。Python在多行上搜索文本

例如:

this should not be printed! 
this should also not be printed! "word" = 12345 
6789 "R" After this R should not be printed either! 

在6789第3行以上的情况下将不被打印与我的电流。但是我想要它。我如何让python继续多行,直到它到达“R”。

感谢您的帮助!

回答

0

由于您正在一行中搜索单词,因此它不会在下一行中打印内容是很正常的。更好的解决方案如下。

import os 
searchquery = 'word' 
with open('Y:/Documents/result.txt', 'w') as f: 
    for filename in os.listdir('Y:/Documents/scripts/script files'): 
     with open('Y:/Documents/scripts/script files/' + filename) as currentFile:    
      content = ''.join([line for line in currentFile]) 
      start = content.find(searchquery) 
      end = content.find("R") 
      result = content[start:end].replace("\n", "") 
      print result 
      f.write(result + ' ' +filename[:-4] + '\n') 

请注意,这只适用于单次发生。您需要进一步分解以打印多个事件。