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

1

Я хочу найти ключевое слово в документе, а затем проверить, находится ли это ключевое слово в пределах 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)

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

Теги:
search

2 ответа

2
Лучший ответ

Вместо

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

Вам нужно:

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

Исходный код ищет строку, содержащую именно контент "Финансовые активы", вместо поиска в качестве подстроки в каждой строке.

  • 0
    Это сработало отлично. Спасибо вам большое!
0

Выражение

"carrying" in line

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

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

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

"Finantial Assets:" in " ".join(searchlines[m-5:m+5])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню