• python之保留有限的历史记录(collections.deque)


    1、deque(maxlen=N)创建一个固定长度的队列,当有新的记录加入而队列已经满时,会自动移除老的记录.

    from collections import deque
    q = deque(maxlen=3)
    q.append(1)
    q.append(2)
    q.append(3)
    q
    deque([1, 2, 3], maxlen=3)
    q.append(4)
    q
    deque([2, 3, 4], maxlen=3)

    应用功能:

    保存有限的历史记录collections.deque的完美应用场景,例如下面的代码对一段文本做简单的文本匹配处理,当发现有匹配的时就输出当前的匹配行,
    以及最后检查过的N行文本

    from collections import deque
    
    
    def search(lines, pattern, history=5):
        previous_lines = deque(maxlen=history) #collection.deque : deque (maxlen=N)创建了一个固定长度的队列,当有新的队列已满时会自动移除最老的那条记录  # deque([], maxlen=5) 创建一个队列
        for line in lines:
            print('当前要匹配行:', line)
            if pattern in line:
                yield line, previous_lines     #  previous: deque(['python1
    ', 'python2
    ', '怎么办呢,
    '], maxlen=5)
    
    
    if __name__ == '__main__':
        with open('somefile.txt') as f:
            for line, previous in search(f, 'python', 5):  # 调用search函数,每次yield当前匹配的文本和最后匹配检查过的N行文本
                print('line:',line,'previous:',previous)
                for pline in previous:
                    print('最后匹配检查过的N行文本:',pline, end='')
                print('-' * 20)
    
    """
    
    somefile.txt文本内容:
    
    python1
    python2
    怎么办呢,
    失效一处python3。
    
    
    输出:
    当前要匹配行: python1
    
    line: python1
     previous: deque([], maxlen=5)
    --------------------
    当前要匹配行: python2
    
    line: python2
     previous: deque(['python1
    '], maxlen=5)
    最后匹配检查过的N行文本: python1
    --------------------
    当前要匹配行: 怎么办呢,
    
    当前要匹配行: 失效一处python3。
    line: 失效一处python3。 previous: deque(['python1
    ', 'python2
    ', '怎么办呢,
    '], maxlen=5)
    最后匹配检查过的N行文本: python1
    最后匹配检查过的N行文本: python2
    最后匹配检查过的N行文本: 怎么办呢,
    --------------------
    
    """
  • 相关阅读:
    Java (三)APACHE Commons IO 常规操作
    JavaFX FileChooser文件选择器,缓存上一次打开的目录
    JavaFX FileChooser文件选择器、DirectoryChooser目录选择器
    javaFX 在窗口的标题栏显示当前时间,1秒更新一次时间
    Java 实现截屏
    composer安装包的时候触发PHP fatal error,提示允许的内存耗光
    箭头函数
    js中的寄生组合继承
    构造函数的原型
    在string.replace中使用具名组匹配
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/9839314.html
Copyright © 2020-2023  润新知