我在使用正则表达式从平面文件中提取信息时遇到了一些问题 (只发短信)。文件的结构如下:
ID(例如,>;YAL001C)
注释/元数据(描述ID来源的简短短语)
序列(非常长的字符串,例如KRHDE…)。。。。平均约500封信)
我试图只提取id和序列(跳过所有元数据)。不幸的是,名单 单靠操作是不够的,例如
with open("composition.in","rb") as all_info:
all_info=all_info.read()
all_info=all_info.split(">")[1:]
因为文本的元数据/注释部分充斥着“>;”字符 导致生成的列表结构不正确。列表理解非常复杂 丑到一定程度后,所以我尝试以下几点:
with open("composition.in","rb") as yeast_all:
yeast_all=yeast_all.read() # convert file to string
## Regular expression to clean up rogue ">" characters
## i.e. "<i>", "<sub>", etc which screw up
## the structure of the eveuntual list
import re
id_delimeter = r'^>{1}+\w{7,10}+\s'
match=re.search(id_delimeter, yeast_all)
if match:
print 'found', match.group()
else:
print 'did not find'
yeast_all=yeast_all.split(id_delimeter)[1:]
我只收到一条错误信息,上面写着“错误:多次重复”
ID的类型为:
YAL001C
YGR103W
YKL068W-A
第一个字符总是“>;”,后面是大写字母和数字,有时是破折号 (-). 我想重新,可以用来找到所有这样的事件和分裂的文字 使用RE作为delimeter来获取id和序列,并省略元数据。我是新的正则表达式,所以有有限的知识的主题!你知道吗
注意:三个字段(ID、metadata、sequence)之间只有一个换行符
试试看
您将在组
id
中找到ID,在组sequence
中找到序列。你知道吗Demo.
说明:
作为python代码:
相关问题 更多 >
编程相关推荐