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字符转换
Sep 06 Python
Python采用Django开发自己的博客系统
Sep 29 Python
基于Django用户认证系统详解
Feb 21 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
详解django中使用定时任务的方法
Sep 27 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
python脚本第一行如何写
Aug 30 Python
python实现简单的名片管理系统
Apr 26 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
PHP date函数参数详解
2006/11/27 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
JavaScript Sort 表格排序
2009/10/31 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
EasyUI创建人员树的实例代码
2017/09/15 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
python3中property使用方法详解
2019/04/23 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
建筑设计师岗位职责
2013/11/18 职场文书
学习经验交流会主持词
2014/04/01 职场文书
负责人任命书范本
2014/06/04 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
春风化雨观后感
2015/06/11 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python