2015-06-05 4 views
0

Я преобразовываю файл кодов кода ORF человека в два списка, один из фрагментов ORF_ID и один из фактических данных последовательности.Преобразование строки вывода в список - Python

for i in fasta_file: 
    ID_list = [] 
    sequences = [] 
    if '>' in i: 
     ORF_start = i.find('>') 
     ORF_end = i.find('PERFECT_MATCH') 
     ORF_ID = i[ORF_start:ORF_end+13] 
     ID_list.append(ORF_ID) 
     print type(ID_list) 
    else: 
     sequences.append(i) 

Когда я печатаю списки, оба они не являются списком строк, а содержат много строк крошечных списков.

Пример:

What I want = separate list of ORF_ID and another data or ['a','b','c'] 
What I get (represented through variables) = 
['a'] 
[] 
['b'] 
[] 
['c'] 

Это всегда происходит со мной на питона. Мне бы очень хотелось помочь.

+3

не должны вы создавать последовательности и ID_LIST вне цикла? –

+0

biopython, вероятно, уже делает то, что вы пытаетесь сделать .... –

ответ

0

Вы сбрасываете списки внутри цикла for.

Смотрите, если это дает вам то, что вы после:

ID_list = [] 
sequences = [] 
for i in fasta_file: 
    ORF_start = i.find('>') 
    if ORF_start >= 0: 
     ORF_end = i.find('PERFECT_MATCH', ORF_start) 
     ORF_ID = i[ORF_start:ORF_end+13] 
     ID_list.append(ORF_ID) 
    else: 
     sequences.append(i) 
print ID_list 
print sequences 

если fasta_file является

['gattaca >cippalippaPERFECT_MATCHxyz', 'sgnoppa >cippalippaPERFECT_MATCHxyz', 'wslewa >cippalippaPERFECT_MATCHxyz', 'whatever', 'anotherone'] 

производит этот выход:

['>cippalippaPERFECT_MATCH', '>cippalippaPERFECT_MATCH', '>cippalippaPERFECT_MATCH'] 
['whatever', 'anotherone'] 
Смежные вопросы