Python中文
首页
教程
问答
标签
搜索
登录
注册
如何对fasta文件的头进行分组
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我的fasta文件的标题如下所示:</p> <pre><code>>ref|NC_001133| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=I] >ref|NC_001134| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=II] >ref|NC_001135| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=III] >ref|NC_001136| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=IV] >ref|NC_001137| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=V] >ref|NC_001138| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VI] >ref|NC_001139| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VII] >ref|NC_001140| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VIII] >ref|NC_001141| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=IX] >ref|NC_001142| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=X] >ref|NC_001143| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XI] >ref|NC_001144| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XII] >ref|NC_001145| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XIII] >ref|NC_001146| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XIV] >ref|NC_001147| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XV] >ref|NC_001148| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XVI] >ref|NC_001224| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [location=mitochondrion] [top=circular] </code></pre> <p>我需要为相应的位置替换每个对应的<code>>ref|NC_001133|</code>,例如,“[chromose=I]”,因为我想为即将到来的运行获得一个合适的格式,但首先我想使用正则表达式对头的每个部分进行分组;然而,在最后一行,线粒体的部分使我很难对每一个项目进行正确的分组。我真的希望你能通过使用正则表达式来帮助分组</p> <p>这是我试图执行的代码的一部分:</p> <pre><code>#!/usr/bin/env python import re import subprocess from sys import argv def get_fasta_rec(input_fasta): """Find all FASTA entries in a FASTA file, change the headers and return them in a dictionary. input_fasta -- FASTA file name record_dict -- dict, {header:seq} """ entries = input_fasta.split(">")[1:] dict_entry = {} for entry in entries: header, x, seq = entry.partition("\n") m = re.search("(.+) (.+\s.+) (.+) (.+) (.+|('[location=mitochondrion] [top=circular]'))", header) if m: ref = m.group(1) org = m.group(2) strain = m.group(3) moltype = m.group(4) location = m.group(5) if __name__ == '__main__': input_fasta = open(argv[1]).read() get_fasta_rec(input_fasta) </code></pre> <p>我希望为每个标题获得的输出是:</p> <pre><code>> [chromosome=I] [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [ref|NC_001133|] > [location=mitochondrion] [top=circular] [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [ref|NC_001224|] </code></pre> <p>提前感谢您的帮助</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>请参见<a href="https://regex101.com/r/yMWZyA/1" rel="nofollow noreferrer">Regex101</a>以了解</p> <p><code>(?:(>ref\|.+\|)\s)?((?:\[[\S\d]+=[^\]]+\])+)\s?</code></p> <p>您需要使用<code>re.findall(...)</code>,并且在每个匹配中,您的属性组将位于组2中</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在python中从数据帧列中删除分类值?
10 回答
如何在python中从数据帧列表中删除引号
8 回答
如何在python中从数据帧创建列表
2 回答
如何在Python中从数据帧创建嵌套的JSON
7 回答
如何在Python中从数据帧显示wordcloud
6 回答
如何在Python中从数据帧的时间戳中删除字符
10 回答
如何在Python中从数据帧绘制简单绘图?
2 回答
如何在python中从数据帧行提取具有特定长度的范围?
3 回答
如何在python中从数据帧设置dict中的值
1 回答
如何在Python中从数据库中获得一个结果
7 回答
如何在python中从数据框中绘制分类条形图
9 回答
如何在Python中从数据框中选择特定细节?
1 回答
如何在python中从数据集中删除unicode
4 回答
如何在python中从数据集中删除某些数值?
5 回答
如何在python中从数据集中选择行
1 回答
如何在Python中从数组中删除元素
2 回答
如何在python中从数组中删除单个倒逗号?
9 回答
如何在python中从数组中删除对象?
6 回答
如何在python中从数组中删除引号
2 回答
如何在python中从数组中删除所有最小值
1 回答