2 Stimmen

Problem beim Extrahieren der Daten aus einer Textdatei

Ich bin neu in Python, und ich möchte die Daten aus diesem Format extrahieren

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

zu diesem Format

    FBpp0143497

5 151 Arrestin_N 1.1e-23

    FBpp0143497

183 323 Arrestin_C 6e-16

Ich habe Code geschrieben in der Hoffnung, dass es funktioniert, aber es funktioniert nicht, bitte helfen Sie!

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]

die hmmtext-Datei lautet

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

3voto

SilentGhost Punkte 285785

Um eine Datei Zeile für Zeile zu durchlaufen, sollten Sie dies tun:

with open(fname) as file:
    for line in file:
        fields = line.split('\t')
        print(fields)          # select fields you want to print

1voto

unutbu Punkte 769083

Verwenden Sie die csv Modul, um Ihre tabulatorgetrennten Felder zu parsen:

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))

erbringt:

> FBpp0143497
5 151 Arrestin_N 1.1e-23 1CL0135
> FBpp0143497
183 323 Arrestin_C 6e-1
> FBpp0131987
60 280 Trypsin 127.7

0voto

Greg Hewgill Punkte 882617

Diese Zeile:

rec = file.read()   

liest Ihre gesamte Datei in rec , Zeilenumbrüche und so weiter. Wahrscheinlich möchten Sie dies tun:

rec = file.readlines()   

Dies ist nur eine Möglichkeit, Zeilen aus einer Datei in Python zu lesen. Es ist nicht immer der beste Weg, denn dadurch wird die todos die Zeilen der Datei in den Speicher. Wenn Ihre Eingabedatei z.B. drei Millionen Zeilen enthält, ist es vielleicht besser, jede Zeile einzeln zu lesen und zu verarbeiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X