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使用socket向客户端发送数据的方法
Apr 29 Python
python中的decorator的作用详解
Jul 26 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
使用python画社交网络图实例代码
Jul 10 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
python实现批量文件重命名
Oct 31 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
Python自动登录QQ的实现示例
Aug 28 Python
python调用摄像头的示例代码
Sep 28 Python
python Tornado框架的使用示例
Oct 19 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 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 5.5 新特性
2013/07/02 PHP
php动态生成函数示例
2014/03/21 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
深入理解Node module模块
2018/03/26 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
python根据出生年份简单计算生肖的方法
2015/03/27 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
荷兰手表网站:Watch2Day
2018/07/02 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
一句话工作感言
2014/03/01 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
表扬信格式模板
2015/05/05 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
学生会任命书范本
2015/09/21 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
家访教师心得体会
2016/01/23 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
MySQL导致索引失效的几种情况
2022/06/25 MySQL