在文件中搜索文本

时间:2009-12-18 16:49:25

标签: python file search

嗨,有几个问题,在我的文本文件中说:

  • abase
  • 自卑
  • 自卑
  • abasements
  • abases

以下编码用于在文件中查找单词并将所有行打印到文件末尾。但它不会只打印我的搜索词而不是文件的其余部分。

search_term = r'\b%s\b' % search_term

for line in open(f, 'r'):
    if re.match(search_term, line):
        if search_term in line:
            f = 1
        if f: print line,

说我搜索了abasement,我希望输出为:

  

自卑

     

abasements

     

abases


我的最后一个问题是,我想搜索一个文件,打印出我的搜索词所在的行,以及在searchterm之后的多行。如果我用'abasement'搜索上面的文本示例,并且我将要打印的行数定义为1,我的输出将是:

  

自卑

     

自卑

     

abasements

numb = ' the number of lines to print either side of the search line '
search_term = 'what i search'
f=open("file")
d={}
for n,line in enumerate(f):
    d[n%numb]=line.rstrip()
    if search_term in line:
        for i in range(n+1,n+1+numb):
            print d[i%numb]
        for i in range(1,numb):
            print f.next().rstrip()

2 个答案:

答案 0 :(得分:1)

对于问题的第一部分,请取消if f: print line,。否则,您只是在正则表达式匹配时尝试打印。

我不清楚你的问题在第二部分是什么。我看到你要做什么,以及你的代码,但你没有说明它是如何行为不端。

答案 1 :(得分:1)

对于第一部分,算法是这样的(伪代码):

found = False
for every line in the file:
    if line contains search term:
        found = True
    if found:
        print line