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练习程序批量修改文件名
Jan 16 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
PyQt5笔记之弹出窗口大全
Jun 20 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
深入了解Python在HDA中的应用
Sep 05 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
pytorch数据预处理错误的解决
Feb 20 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
多个版本的python共存时使用pip的正确做法
Oct 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
Mysql的常用命令
2006/10/09 PHP
PHP用mysql数据库存储session的代码
2010/03/05 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Python print不能立即打印的解决方式
2020/02/19 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
英国日常交易网站:Wowcher
2018/09/04 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
美国滑板店:Tactics
2020/11/08 全球购物
上班早退检讨书
2014/01/09 职场文书
工作交流会欢迎词
2014/01/12 职场文书
中学生运动会入场词
2014/02/12 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
房屋租赁意向书
2014/04/01 职场文书
旅游节目策划方案
2014/05/26 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
教师工作总结范文2014
2014/11/10 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
导游词之山海关
2019/12/10 职场文书
centos7安装mysql5.7经验记录
2022/05/02 Servers