2011-07-28 5 views
0

Это текстовый файл мне нужно иметь дело с:вопрос о команде line.split

chr8 148401 153100 duplication 

chr8 206001 207100 deletion 

chr8 584401 589500 deletion 

chr8 615101 616600 deletion 

chr8 842601 843200 deletion 

chr8 868901 869700 deletion 

В основном я хочу, чтобы извлечь два числа, и сделать вычитание. Мой код выглядит следующим образом:

#!/usr/bin/python 

import os,sys 

file = open('/home/xxx/sge_jobs_output/rCEU.bed','r') 
for line in file.readlines(): 
    num1 = line.split()[1].split()[0] 
    num2 = line.split()[1].split()[1].split()[0] 
    num = int(num2)-int(num1) 
    print num 

Я могу распечатать num1 успешно; но num2 не работает. Таким образом, мы не можем использовать более двух последовательно .split?

И ошибка как:

Traceback (most recent call last): 
    File "CNV_length_cal.py", line 8, in <module> 
    num2 = line.split()[1].split()[1].split()[0] 
IndexError: list index out of range 

Что здесь не так? Я действительно запутался в команде .split ... но я не могу найти учебник по этому вопросу ..thx

+0

«num2 не работает» Не работает * как? * Вы получаете сообщение об ошибке? Если так, то, что это? –

+0

Если вы хотите вызвать что-то для каждого перерыва, вы, вероятно, захотите использовать 'str.partition()' вместо 'str.split()' – SingleNegationElimination

ответ

5

Один раскол достаточно!

>>> s="chr8 584401 589500 deletion" 
>>> l = s.split() 
>>> l 
['chr8', '584401', '589500', 'deletion'] 
>>> int(l[1]) - int(l[2]) 
-5099 
Смежные вопросы