Поиск текста в файле - PullRequest
       23

Поиск текста в файле

0 голосов
/ 18 декабря 2009

Привет, у меня есть пара проб, скажем, у меня в текстовом файле:

  • унизить
  • унижен
  • уничижение
  • унижения
  • унижает

Эта кодировка ниже предназначена для поиска слова в файле и печати всех строк в конце файла. Но он не печатает только мой поисковый запрос, а не остальную часть файла.

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

for line in open(f, 'r'):
    if re.match(search_term, line):
        if search_term in line:
            f = 1
        if f: print line,

Скажем, я искал унижение, я хотел бы, чтобы результат был:

уничижение

abasements

унижает


Моя последняя проблема заключается в том, что я хотел бы найти в файле распечатку строк, в которых указан мой поисковый запрос, и нескольких строк после и после запроса. Если бы я искал в приведенном выше примере текста слово «abasement» и определил количество строк для печати с обеих сторон, равное 1, мой вывод был бы:

унижен

уничижение

abasements

numb = ' the number of lines to print either side of the search line '
search_term = 'what i search'
f=open("file")
d={}
for n,line in enumerate(f):
    d[n%numb]=line.rstrip()
    if search_term in line:
        for i in range(n+1,n+1+numb):
            print d[i%numb]
        for i in range(1,numb):
            print f.next().rstrip()

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

Для первой части алгоритм выглядит следующим образом (в псевдокоде):

found = False
for every line in the file:
    if line contains search term:
        found = True
    if found:
        print line
1 голос
/ 18 декабря 2009

Для первой части вопроса, отступите от вашего if f: print line,. В противном случае вы пытаетесь печатать, только когда регулярное выражение совпадает.

Мне не ясно, какой у вас вопрос во второй части. Я вижу, что вы пытаетесь сделать, и ваш код, но вы не указали, как он себя плохо ведет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...