嗨,有几个问题,在我的文本文件中说:
以下编码用于在文件中查找单词并将所有行打印到文件末尾。但它不会只打印我的搜索词而不是文件的其余部分。
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()
答案 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