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)
  • 相关阅读:
    版本回退
    时光机穿梭
    创建版本库
    安装Git
    Git简介
    Nexus私服安装
    eclipse中创建MAVEN-web项目
    AsyncTask的使用
    在子线程中更新UI,只能使用Handler
    使用VideoView播放视频
  • 原文地址:https://www.cnblogs.com/jescs/p/11867597.html
Copyright © 2011-2022 走看看