在文本文件和构建数组中分配标头

时间:2016-07-28 19:23:23

标签: python arrays python-2.7 header

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

->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

请帮忙! (另外,我就像是初级到中级程序员,所以请不要太难)

1 个答案:

答案 0 :(得分:1)

你的例子坏了。 所有行都以->

开头

所以我假设你想把它们分成第一个空格字符。

#! /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