#保留符合要求的N个条目fromcollectionsimportdequedefsearch(lines,pattern,history=5):previous_lines=deque(maxlen=history)#队列forliinlines:ifpatterninli:yieldli,previous_lines#找到pattern,并yieldprevious_lines.append(li)#入队列#Exampleuseomsfileif__name__=='__main__':withopen(r'/etc/passwd')asf:#被查找文件forline,prevlinesinsearch(f,'root',6):forplineinprevlines:#输出队列print(pline,end='')print('-'*20)

#括号匹配stack=[]forcinexp:ifcin(t[0]fortinbrackets):#依次找到所有左括号,并入栈stack.append(c)elifcin(t[1]fortinbrackets):#判断右括号ifnotlen(stack):print('Error')#栈空,则不匹配breakleft=stack.pop()#找到栈顶元素所匹配的右括号bs=[t[1]fortinbracketsift[0]==left]ifbs[0]!=c:#判断栈顶右括号是否与当前右括号相匹配print('Error')breakelse:iflen(stack):#栈空,则匹配print('Error')else:print('Ok')