вопрос по команде line.split - PullRequest
0 голосов
/ 28 июля 2011

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

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

1 Ответ

5 голосов
/ 28 июля 2011

Достаточно одного разбиения!

>>> s="chr8    584401  589500  deletion"
>>> l = s.split()
>>> l
['chr8', '584401', '589500', 'deletion']
>>> int(l[1]) - int(l[2])
-5099
...