在文本文件中指定标题并构建数组

2024-09-28 03:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,读取一个文本文件并解析其中的信息。文本文件的示例如下:

->DQB1*02:02:01:01
GAACTTTGCTCTTTTCACCAAAACTTAAGGCTCCTCAGGGTGTGTCTAAGACAACAGCAGTAAAAATGTCTATGACAGCAATTTTCTCTCCCCTGAAATATGATCCCCACTTAATTTGCCCTATTGAAAGAATCCCAAGTATAAGAACAACTGGTTTTTAATCAATATTACAAAGATGTTTACTGTTGAATCGCATTTTTCTTTGGCTTCTTAAAATCCCTTAGGCATTCAATCTTCAGCTCTTCCATAAT

->OMIXON_CONSENSUS_M-86-11-9517_DQB1*02:02:01
GTCCAAGCTGTGTTGACTACCACTACTTTTCCCTTCGTCTCAATTATGTCTTGGAAGAAGGCTTTGCGGATCCCTGGAGGCCTTCGGGTAGCAACTGTGACCTTGATGCTGGCGATGCTGAGCACCCCGGTGGCTGAGGGCAGAGACTCTCCCGGTAAGTGCAGGGCCACTGCTCTCCAGAGCCGCCACTCTGGGAACAGGCTCTCCTTGGGCTGGGGT

->GENDX_CONSENSUS_M-86-11-9517_DQB1*02:02:01:01
TGCCAGGTACATCAGATCCATCAGGTCCAAGCTGTGTTGACTACCACTACTTTTCCCTTCGTCTCAATTATGTCTTGGAAGAAGGCTTTGCGGATCCCTGGAGGCCTTCGGGTAGCAACTGTGACCTTGATGCTGGCGATGCTGAGCACCCCGGTGGCTGAGGGCAGAGACTCTCCCGGTAAGTGCAGGGCCACTGCTCTCCAGAGCCGCCACTCTGGGA

我试图将所有以>开始的行作为标题,这样我就可以创建一个标题数组,其余的文本作为一个序列数组,这样之后我就可以对齐序列并进行解析。我在分配标题时遇到问题。到目前为止,我的代码如下:

def readfile():

with open ("testAllele1.txt", "r") as myfile:
    y = myfile.read()
with open(y) as z:
    for line in z: # build array
        counter=1
        if line.startswith(">"): #header array
            header(counter)=line
            counter=counter+1
        else:
            sequence(counter)=line #sequence array

请帮帮我(另外,我像一个初学者到中级程序员,所以没有什么太难的请)


Tags: 标题aswithlinecounter序列数组open
1条回答
网友
1楼 · 发布于 2024-09-28 03:19:41

你的例子是错误的。 所有行都以->开头

所以我假设你想在第一个空格处拆分它们

#! /usr/bin/env python

# read the file and split into lines
y = open("testAllele1.txt", "r").read()
z = y.splitlines()

# initialize
header = []
sequence = []

#loop over all lines
for line in z:
    if line.startswith("->"):
        h, s = line.split()
        h = h[2:] # cut away the leading "->"
        header.append(h)
        sequence.append(s)

print header
print sequence

相关问题 更多 >

    热门问题