python中txt文件的过滤
我有太多这样的台词:python中txt文件的过滤,python,Python,我有太多这样的台词: >ENSG00000100206|ENST00000216024|DMC1|2371|38568257;38570043|38568289;38570286 CTCAGACGTCGGGCCGACGCAAGGCCACGCGCGCGAACACACAGGTGCGGCCCCGGGCCA CACGCACACCGTACAC >ENSG00000001630|ENST00000003100|CYP51A1|3210|92134365|92134530 TATATCACAGTT
>ENSG00000100206|ENST00000216024|DMC1|2371|38568257;38570043|38568289;38570286
CTCAGACGTCGGGCCGACGCAAGGCCACGCGCGCGAACACACAGGTGCGGCCCCGGGCCA
CACGCACACCGTACAC
>ENSG00000001630|ENST00000003100|CYP51A1|3210|92134365|92134530
TATATCACAGTTTCTTTCTTTTTTTTTTTTTTTTTTTTGAGACAGAGTTTTGCTCTTGTT
GCCCAGGCTGGAGTACAGTGACGCAATCTCGGCTCACTGCAACCTTTGCCTCCCAGGTTC
>ENSG00000100206|ENST00000216024|DMC1|2371|38568257;38570043|38568289;38570286
TTAACTATAATCCCACTGCCTATTTTTTTATTTCTAAAAATATCATAAAAAGACACAAAA
>ENSG00000100206|ENST00000216024|DMC1|2371|38568257;38570043|38568289;38570286
CTCAGACGTCGGGCCGACGCAAGGCCACGCGCGCGAACACACAGGTGCGGCCCCGGGCCA
CACGCACACCGTACAC
>ENSG00000001630|ENST00000003100|CYP51A1|3210|92134365|92134530
TATATCACAGTTTCTTTCTTTTTTTTTTTTTTTTTTTTGAGACAGAGTTTTGCTCTTGTT
GCCCAGGCTGGAGTACAGTGACGCAATCTCGGCTCACTGCAACCTTTGCCTCCCAGGTTC
第一行(以>
开头)是标识符,其他行是序列,并且每个标识符都有自己的序列。在上述示例中,ensg000010006
是名称,enst0000216024
是异构体。在我的文件中,有一些标识符行具有相同的名称,但其他所有内容都不同。
我想获得每个名称的最长序列,并创建一个新文件。这意味着每个名字只有一次重复(但顺序最长)。
对于上述示例,结果如下所示:
>ENSG00000100206|ENST00000216024|DMC1|2371|38568257;38570043|38568289;38570286
CTCAGACGTCGGGCCGACGCAAGGCCACGCGCGCGAACACACAGGTGCGGCCCCGGGCCA
CACGCACACCGTACAC
>ENSG00000001630|ENST00000003100|CYP51A1|3210|92134365|92134530
TATATCACAGTTTCTTTCTTTTTTTTTTTTTTTTTTTTGAGACAGAGTTTTGCTCTTGTT
GCCCAGGCTGGAGTACAGTGACGCAATCTCGGCTCACTGCAACCTTTGCCTCCCAGGTTC
>ENSG00000100206|ENST00000216024|DMC1|2371|38568257;38570043|38568289;38570286
TTAACTATAATCCCACTGCCTATTTTTTTATTTCTAAAAATATCATAAAAAGACACAAAA
>ENSG00000100206|ENST00000216024|DMC1|2371|38568257;38570043|38568289;38570286
CTCAGACGTCGGGCCGACGCAAGGCCACGCGCGCGAACACACAGGTGCGGCCCCGGGCCA
CACGCACACCGTACAC
>ENSG00000001630|ENST00000003100|CYP51A1|3210|92134365|92134530
TATATCACAGTTTCTTTCTTTTTTTTTTTTTTTTTTTTGAGACAGAGTTTTGCTCTTGTT
GCCCAGGCTGGAGTACAGTGACGCAATCTCGGCTCACTGCAACCTTTGCCTCCCAGGTTC
你们知道如何在python中做到这一点吗?你们可以从使用Biopython获得合适的FASTA格式解析器开始: 然后遍历这些记录,并对它们执行您想要的操作。这不仅可以节省编写解析器的时间,还可以防止完全错误地编写解析器 该页中的示例:
from Bio import SeqIO
for record in SeqIO.parse("example.fasta", "fasta"):
print(record.id)
不要打印,而是创建一个dict
{record.id:record.length}
,只有当长度较长时才更新该dict。从迭代所有这些行的代码开始。因此,这不是一个代码编写服务。你必须通过展示你迄今为止所做的努力来展示你的努力。@matias elgart:不,不要。如果有一百万个更好的语法分析器,你就不需要编写自己的语法分析器了。@JulienD我建议你至少尝试一些东西,而不是不尝试就去问答案。没错,但这不是一个答案。我不会写他的代码,也不会在注释中使用它,尽管我认为这很有用。此外,我不希望他在评论中听从马蒂亚斯·埃尔加特的建议。