Я хочу найти ключевое слово в документе, а затем проверить, находится ли это ключевое слово в пределах 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)
Любая помощь будет высоко оценена.
Вместо
"Financial Assets:" in searchlines[m-5:m+5]
Вам нужно:
any("Financial Assets:" in line2 for line2 in searchlines[m-5:m+5])
Исходный код ищет строку, содержащую именно контент "Финансовые активы", вместо поиска в качестве подстроки в каждой строке.
Выражение
"carrying" in line
выполняет поиск строки в любой позиции внутри строки. Однако утверждение
"Finantial Assets:" in searchlines[m-5:m+5]
выполняет поиск точного соответствия (т.е. строки, которая точно "Финансовые активы:" ) в этом подсписке. Вам нужно изменить эту вторую часть на что-то вроде
"Finantial Assets:" in " ".join(searchlines[m-5:m+5])