2011-04-28 59 views
1

我想搜索文檔中的關鍵詞,然後檢查該關鍵字是否在另一個關鍵詞的5行內。如果是這樣,我想打印該行和下面的50行。如何在文檔中搜索關鍵字,然後在Python中的原始關鍵字的一組行中搜索後續關鍵詞?

在這個例子中,我正在搜索單詞「carry」,我想確保單詞「carry」在單詞「Financial Assets:」的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

代替

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

你需要有:

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

你的原代碼查找包含完全相同的內容「金融資產:」行,而不是尋找它作爲一個,每行的子串。

+0

完美運行。非常感謝! – user728166 2011-04-28 21:14:27

0

表達

"carrying" in line 

搜索在線路內的任何位置的字符串。然而,聲明

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

正在該子列表中搜索完全匹配(即一行完全是「Finantial Assets:」)。您需要將此第二部分更改爲類似於

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