测试文件

$ head -20 test.txt
python
akdfj
adfkjakd
adfka;sdlfk
adfkasdf
kdasfjaslkdf
dfskafjadsl
python
adaksf
dkfsafj
dkfsafj
dkfsafj
dkfsafj
dkfsafj
dkfsafj
dkfsafj
dkfsafj
dkfsafj
dkfsafj
dkfsafj

方法一:

$ cat grep_B_1.py
# -*- encoding = utf-8 -*-"""
This module supply the same fuction of grep -B N:param filename
:param pattern
:param maxlenUsage:>>> python grep_B_1.py test.txt python 3"""from __future__ import print_function
import sys
import collectionsdef grep_B(filename, pattern, maxlen=3):""""""with open(filename, 'r') as f:q = collections.deque(maxlen=int(maxlen))for line in f:if pattern in line:print(''.join(q), end='')print(line, end='')print('-' * 20)q.append(line)if __name__ == '__main__':grep_B(*sys.argv[1:])

测试结果一:

$ python grep_B_1.py test.txt python 3
python
--------------------
adfkasdf
kdasfjaslkdf
dfskafjadsl
python
--------------------

方法二:

$ cat grep_B_2.py
# -*- encoding = utf-8 -*-"""
"""from __future__ import print_function
import sys
import redef grep_B(filename, pattern, maxlen):""""""with open(filename, 'r') as f:context = ''.join(f.readlines())m = re.compile(r'(\n.*){0,3}')l = re.split('(.*' + pattern + '.*\n)', context)for b,a in zip(l[0::2], l[1::2]):print(m.match(b[::-1]).group(0)[::-1], end='')print(a, end='')print('-' * 20)if __name__ == '__main__':grep_B(*sys.argv[1:])

$ python grep_B_2.py test.txt python 3
python
--------------------
adfkasdf
kdasfjaslkdf
dfskafjadsl
python
--------------------

转载于:https://www.cnblogs.com/sky58/p/8635778.html

python练习--模拟grep -B功能相关推荐

  1. python爬虫登录微博_python爬虫-模拟微博登录功能

    微博模拟登录 这是本次爬取的网址:https://weibo.com/ 一.请求分析 找到登录的位置,填写用户名密码进行登录操作 看看这次请求响应的数据是什么 这是响应得到的数据,保存下来 exect ...

  2. python模拟10086查询功能

    模拟10086查询功能 for i in range(100):print(""" 能量查询请输入能量来源!退出程序请输入0 能量来源如下: 生活缴费.行走捐.共享单车. ...

  3. 用python画太阳系_用 Python 动态模拟太阳系运转

    提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...

  4. python绘制动态模拟图-如何利用Python动态模拟太阳系运转

    前言 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周 ...

  5. python模拟太阳系_用 Python 动态模拟太阳系运转

    提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...

  6. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  7. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  8. Python爬虫之selenium高级功能

    Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...

  9. python自动化模拟浏览器

    采用python自动化模拟浏览器操作 # -*- coding: utf-8 -*-""" 通过splinter刷12306火车票 可以自动填充账号密码并登陆,接下来的事 ...

最新文章

  1. android:theme.holo.light.,Android: Theme.Holo.Light.NoActionBar vs Theme.Light.NoTitleBar
  2. 三 mybatis typeAlias(别名)使用和resultMap使用
  3. 微信开发系列之一 - 微信公众号开发的开发环境搭建
  4. inline,block,inline-block的区别
  5. 2021年中国电动牙刷市场趋势报告、技术动态创新及2027年市场预测
  6. Delphi Note
  7. 计算机通信与网络技术考研录取,计算机科学与通信工程学院2021年硕士研究生招生一志愿复试名单公示...
  8. 软件架构之分层模式 Layered Architecture
  9. Jquery 禁止键盘Backspace键
  10. 【转载】巴菲特:比能力更重要的是靠谱
  11. 《叶圣陶语文教育论集》的阅读笔记和读后感3400字
  12. H265/HEVC编码NAL的单元的介绍
  13. 不经一番彻骨寒,怎得梅花扑鼻香
  14. xampp集成环境里查看php版本信息
  15. 2022年全国大学生数学建模竞赛E题思路
  16. TCP/IP学习(待续)
  17. 【漏洞复现】Weblogic CVE-2023-21839
  18. 大庆 让胡路 长青 车检中心 检车流程
  19. spark分析某国气象站平均气温实例
  20. round在python是什么意思_python – round()和numpy.round()之间的底层差异是什么?

热门文章

  1. android+java.lang.VerifyError
  2. 【Android】启动过程:Bootloader-System/Recovery
  3. IP层:尽力交付,可能丢包,可能重包,可能无序
  4. OpenCV实现最大最小距离聚类算法
  5. eclipse开发cocos2dx 3.2环境搭建之一: Android C\C++环境搭建(ndk r9d)
  6. Shell脚本编写及常见面试题
  7. Unity中使用Attribute
  8. 第十三章:Python の 网络编程进阶(二)
  9. DTRACE简介(2)
  10. C# Datatable排序与取前几行数据