zoukankan      html  css  js  c++  java
  • 文本匹配,只返回匹配成功的行

     1 from collections import deque
     2 
     3 
     4 def search(lines, pattern, history=5):
     5     previous_lines = deque(maxlen=history)  # 只取history值列
     6     # 提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除,
     7     # 当限制长度的deque增加超过限制数的项时, 另一边的项会自动删除
     8     for li in lines:
     9         if pattern in li:
    10             yield li  # yield 进行迭代
    11             # 带yield的函数是一个生成器,而不是一个函数了,这个生成器有一个函数就是next函数,next就相当于“下一步”生成哪个数,
    12             # 这一次的next开始的地方是接着上一次的next停止的地方执行的,所以调用next的时候,生成器并不会从foo函数的开始执行,只是接着上一步停止的地方开始,然后遇到yield后,return出要生成的数,此步就结束。
    13         previous_lines.append(li)
    14 
    15 
    16 if __name__ == '__main__':
    17     count = 0
    18     with open('C:\Users\Administrator\Desktop\文件\doc\test.txt') as f:
    19         for line in search(f, 'runningdoctor', 5):
    20             print(line, end='')
    21             count += 1
    22             print('-' * 20)
    23         print(count)
  • 相关阅读:
    JavaScript伪协议
    http-equiv
    js 获取鼠标坐标
    js daily
    Swift中属性Properties
    Swift中类和结构体
    Swift和Java在枚举方面的比较
    Swift特有语法:闭包
    Swift和Java在函数(method/方法)方面的比较
    Swift和Java控制流比较
  • 原文地址:https://www.cnblogs.com/jescs/p/11867597.html
Copyright © 2011-2022 走看看