Python实现简单过滤文本段的方法


Posted in Python onMay 24, 2017

本文实例讲述了Python实现简单过滤文本段的方法。分享给大家供大家参考,具体如下:

一、问题:

如下文本:

## Alignment 0: score=397.0 e_value=8.2e-18 N=9 scaffold1&scaffold106 minus
 0- 0:  10026549  10007782   2e-75
 0- 1:  10026550  10007781   8e-150
 0- 2:  10026552  10007780   1e-116
 0- 3:  10026555  10007778    0
 0- 4:  10026570  10007768    0
 0- 5:  10026579  10007758   4e-15
 0- 6:  10026581  10007738   2e-44
 0- 7:  10026587  10007734   9e-145
 0- 8:  10026591  10007732   2e-147
## Alignment 1: score=2304.0 e_value=1e-164 N=47 scaffold1&scaffold107 minus
 1- 0:  10026836  10007942   2e-84
 1- 1:  10026839  10007940    0
 1- 2:  10026840  10007938    0
 1- 3:  10026842  10007937   9e-82
 1- 4:  10026843  10007935   7e-79
 1- 5:  10026847  10007933   3e-119
 1- 6:  10026850  10007932   2e-87
 1- 7:  10026854  10007928   5e-22
 1- 8:  10026855  10007927   3e-101
 1- 9:  10026856  10007925   1e-106
 1- 10:  10026857  10007924    0
 1- 11:  10026858  10007922   9e-123
 1- 12:  10026859  10007921   1e-80
 1- 13:  10026860  10007920   8e-104
 1- 14:  10026862  10007918   4e-25
 1- 15:  10026863  10007917    0
 1- 16:  10026864  10007912   4e-40
 1- 17:  10026865  10007911    0
 1- 18:  10026866  10007910   7e-122
 1- 19:  10026867  10007908   2e-25
 1- 20:  10026868  10007907    0
 1- 21:  10026869  10007905    0
 1- 22:  10026870  10007904   3e-150
 1- 23:  10026871  10007903   5e-77
 1- 24:  10026874  10007901    0
 1- 25:  10026875  10007897    0
 1- 26:  10026876  10007896    0
 1- 27:  10026877  10007894    0
 1- 28:  10026880  10007893   3e-52
 1- 29:  10026881  10007892    0
 1- 30:  10026882  10007891    0
 1- 31:  10026883  10007890    0
 1- 32:  10026886  10007889   1e-50
 1- 33:  10026887  10007888   6e-157
 1- 34:  10026888  10007887    0
 1- 35:  10026889  10007884    0
 1- 36:  10026890  10007883   2e-18
 1- 37:  10026891  10007882   9e-64
 1- 38:  10026892  10007881    0
 1- 39:  10026895  10007880    0
 1- 40:  10026898  10007875    0
 1- 41:  10026900  10007874    0
 1- 42:  10026901  10007873    0
 1- 43:  10026902  10007871   2e-123
 1- 44:  10026903  10007870    0
 1- 45:  10026905  10007869    0
 1- 46:  10026909  10007868   1e-81
## Alignment 2: score=811.0 e_value=3.3e-43 N=17 scaffold1&scaffold111 minus
 2- 0:  10026595  10007449   6e-40
 2- 1:  10026599  10007448   4e-90
 2- 2:  10026600  10007447    0
 2- 3:  10026601  10007444   9e-55
 2- 4:  10026603  10007438   4e-78
 2- 5:  10026604  10007434   9e-122
 2- 6:  10026606  10007432   2e-162
 2- 7:  10026607  10007427    0
 2- 8:  10026608  10007426    0
 2- 9:  10026612  10007417    0
 2- 10:  10026613  10007415   8e-128
 2- 11:  10026614  10007414   3e-64
 2- 12:  10026615  10007409    0
 2- 13:  10026616  10007406    0
 2- 14:  10026617  10007403   1e-171
 2- 15:  10026618  10007402    0
 2- 16:  10026619  10007397   7e-18
........

要求:如果Alignment后面少于20行,把整个的去掉

二、实现方法:

python代码:

#!/usr/bin/python
sum = 0
sumdata = []
FD = open("/root/data.txt","r")
line = FD.readline()
while line:
 if line.find("Alignment") == 3:
 if sum >= 20:
 for i in sumdata:
 print i,
 sum=0
 sumdata=[line]
 else:
 sum = sum + 1
 sumdata.append(line)
 line=FD.readline()
 if len(line) == 0:
 if sum >= 20:
 for i in sumdata:
 print i,

附:

perl代码

#!/usr/bin/perl
open(FD,"/root/data.txt");
while (){
  if ($_ =~ /Alignment/){
    if($sum >= 20){
      print @sumdata;}
    $sum=0;
    @sumdata=($_);}
  else{
    $sum++;
    push(@sumdata,$_);}
}
print @sumdata if $sum >=20;
close(FD);

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中使用 Selenium 实现网页截图实例
Jul 18 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
Python捕捉和模拟鼠标事件的方法
Jun 03 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
Python之pandas读写文件乱码的解决方法
Apr 20 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Python 实现微信防撤回功能
Apr 29 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
Python print不能立即打印的解决方式
Feb 19 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 Python
django框架如何集成celery进行开发
May 24 #Python
python 计算两个日期相差多少个月实例代码
May 24 #Python
django基础之数据库操作方法(详解)
May 24 #Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 #Python
Python生成密码库功能示例
May 23 #Python
Python计算两个日期相差天数的方法示例
May 23 #Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 #Python
You might like
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
解析php类的注册与自动加载
2013/07/05 PHP
php格式化电话号码的方法
2015/04/24 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python守护线程用法实例
2017/06/23 Python
matplotlib绘制动画代码示例
2018/01/02 Python
Python入门必须知道的11个知识点
2018/03/21 Python
详解Python 正则表达式模块
2018/11/05 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
物业管理公司实习生自我鉴定
2013/09/19 职场文书
投标承诺书范本
2014/03/27 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
农业项目建议书
2014/08/25 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
2014年外联部工作总结
2014/11/17 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
《将心比心》教学反思
2016/02/23 职场文书
求职自我评价参考范文
2019/05/16 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
如何基于python实现单目三维重建详解
2022/06/25 Python