Как я могу найти в документе ключевое слово, а затем последующие ключевые слова в пределах заданного числа строк исходного ключевого слова в Python? - PullRequest
1 голос
/ 29 апреля 2011

Я хочу найти ключевое слово в документе, а затем проверить, находится ли это ключевое слово в пределах 5 строк другого ключевого слова. Если это так, я хочу напечатать строку и следующие 50 строк.

В этом примере я ищу в документе слово «перенос» и хочу убедиться, что слово «перенос» находится в 5 строках слова «Финансовые активы: строки, когда я просто включаю поиск «перенос», но когда я включаю поиск «финансовые активы», он ничего не находит (хотя я знаю, что он есть в документе).

import urllib2

data = []

html = urllib2.urlopen("ftp://ftp.sec.gov/edgar/data/1001627/0000950116-97-001247.txt")
searchlines = html.readlines()
for m, line in enumerate(searchlines):
    line = line.lower()
    if "carrying" in line and "Financial Assets:" in searchlines[m-5:m+5]: 
        for l in searchlines[m-5:m+50]:
            data.append(l)
print ''.join(data)

Любая помощь будет высоко ценится.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Вместо

"Financial Assets:" in searchlines[m-5:m+5]

Вам необходимо иметь:

any("Financial Assets:" in line2 for line2 in searchlines[m-5:m+5])

Ваш исходный код ищет строку, которая содержит именно содержание «Финансовые активы», а не ищетэто как подстрока в каждой строке.

0 голосов
/ 29 апреля 2011

Выражение

"carrying" in line

ищет строку в любой позиции внутри строки. Однако утверждение

"Finantial Assets:" in searchlines[m-5:m+5]

ищет точное совпадение (то есть строку, которая в точности совпадает с "Finantial Assets:") в этом подсписке. Вам нужно изменить эту вторую часть на что-то вроде

"Finantial Assets:" in " ".join(searchlines[m-5:m+5])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...