我正在编写一个程序,它读取文本文件并解析其中的信息。文本文件的示例如下:
->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
请帮忙! (另外,我就像是初级到中级程序员,所以请不要太难)
答案 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