如何在文档中搜索关键字,然后在Python中原始关键字的一定数量的行中搜索后续关键字?

时间:2011-04-28 21:09:56

标签: python search

我想在文档中搜索关键字,然后检查该关键字是否在另一个关键字的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 个答案:

答案 0 :(得分:2)

而不是

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

你需要:

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

您的原始代码会查找包含“Financial Assets:”内容的行,而不是将其作为每行中的子字符串进行查找。

答案 1 :(得分:0)

表达式

"carrying" in line

在该行内的任何位置搜索字符串。但声明

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

正在该子列表中搜索完全匹配(即一条完全是“Finantial Assets:”的行)。您需要将第二部分更改为

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