проблема при извлечении данных из текстового файла - PullRequest
2 голосов
/ 20 мая 2010

Я новичок в Python, и я хочу извлечь данные из этого формата

FBpp0143497 5 151 5 157 PF00339.22 Arrestin_N Domain 1 135 149 83.4 1.1e-23 1 CL0135
FBpp0143497 183 323 183 324 PF02752.15 Arrestin_C Domain 1 137 138 58.5 6e-16 1 CL0135
FBpp0131987 60 280 51 280 PF00089.19 Trypsin Domain 14 219 219 127.7 3.7e-37 1 CL0124

в этот формат

    FBpp0143497

5 151 Arrestin_N 1.1e-23

    FBpp0143497

183 323 Arrestin_C 6e-16

Я написал код в надежде, что он работает, но он не работает, пожалуйста, помогите!

file = open('/ddfs/user/data/k/ktrip_01/hmm.txt','r')
rec = file.read()   
for line in rec :
         field = line.split("\t")
         print field             
         print field[:]             
         print '>',field[0]             
         print   field[1], field[2],   field[6], field[12]

файл hmmtext

FBpp0143497 5    151      5    157 PF00339.22  Arrestin_N        Domain     1   135   149     83.4   1.1e-23   1 CL0135   

FBpp0143497    183    323    183    324 PF02752.15  Arrestin_C        Domain     1   137   138     58.5     6e-16   1 CL0135   


FBpp0131987     60    280     51    280 PF00089.19  Trypsin           Domain    14   219   219    127.7   3.7e-37   1 CL0124

Ответы [ 3 ]

3 голосов
/ 20 мая 2010

построчно перебирать файл, вы должны сделать:

with open(fname) as file:
    for line in file:
        fields = line.split('\t')
        print(fields)          # select fields you want to print
1 голос
/ 20 мая 2010

Используйте модуль csv для анализа полей, разделенных табуляцией:

import csv
filename='/ddfs/user/data/k/ktrip_01/hmm.txt'

template='''\
> {field[0]}
{field[1]} {field[2]} {field[6]} {field[12]}'''

with open(filename,"r") as f:
    csvobj=csv.reader(f,delimiter='\t')
    for field in csvobj:
        if field:
            print(template.format(field=field))

выходы:

> FBpp0143497
5 151 Arrestin_N 1.1e-23 1CL0135
> FBpp0143497
183 323 Arrestin_C 6e-1
> FBpp0131987
60 280 Trypsin 127.7
0 голосов
/ 20 мая 2010

Эта строка:

rec = file.read()   

читает весь ваш файл в rec, разрывы строк и все. Вы, вероятно, хотите сделать это:

rec = file.readlines()   

Это всего лишь один способ прочитать строки из файла в Python. Это не всегда лучший способ, потому что это загрузит все строк файла в память. Если ваш входной файл содержит, скажем, три миллиона строк, возможно, было бы лучше прочитать и обработать каждую строку по одной за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...