2015-12-15 2 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') 

Обратите внимание, что это будет работать только для одного случая. Вам нужно будет разбить его, чтобы распечатать несколько случаев.

Смежные вопросы