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实现优先级队列结构的方法详解
Jun 02 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python sys.argv[]用法实例详解
May 25 Python
Python同步遍历多个列表的示例
Feb 19 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
简单了解python中对象的取反运算符
Jul 01 Python
Python中断多重循环的思路总结
Oct 04 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
python打印异常信息的两种实现方式
Dec 24 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
python 获取谷歌浏览器保存的密码
Jan 06 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
php三元运算符知识汇总
2015/07/02 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
js类 from qq
2006/11/13 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
JS如何监听div的resize事件详解
2020/12/03 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
深入学习python的yield和generator
2016/03/10 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
关于python中的xpath解析定位
2020/03/06 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
高考自主招生自荐信
2013/10/20 职场文书
优乐美广告词
2014/03/14 职场文书
会议欢迎词
2015/01/23 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
人力资源部工作计划
2019/05/14 职场文书