Seite 1 von 1

dictionary

Verfasst: Donnerstag 3. Mai 2007, 09:57
von silky vanilla
Ich habe eine Datei(mit jeder Menge Daten) die aus Spalten besteht, die durch Tabulatoren getrennt sind.
Insgesamt besitz sie 8 Spalten. Ich moechta allerdings nur mit Spalte 2 und 3 weiterarbeiten und diese in ein Dictionary ueberfuehren, dabei soll Spalte 2 der value sein und Spalte 3 der key.

Wie kann ich das am besten umsetzen?

Hier schon mal ein kleiner Anfang von mir, nun haenge ich aber fest.

Code: Alles auswählen

 inp = open ("RefSeq2Entrez.HS.txt","r")      # Datei zum Lesen oeffnen
outp = open ("RefSeq2Entrez.HS.neu.txt","w") # neue Datei zum Schreiben oeffnen (fuer Kopie)[/img]
for line in inp.readlines():                 # erzeugt Liste von Zeilen

Verfasst: Donnerstag 3. Mai 2007, 10:04
von Rebecca
Ein Tipp: line.split("\t")

Ein anderer Tipp: http://docs.python.org/lib/module-csv.html

Verfasst: Donnerstag 3. Mai 2007, 10:06
von EyDu

Code: Alles auswählen

line.split("\t")
sollte dir weiterhelfen.

Ein Dictionary erzeugst du mit:

Code: Alles auswählen

d = dict()
Einfuegen in ein Dictionary geht über:

Code: Alles auswählen

d[key] = value
Und so kannst du auf den Index einer Liste zugreifen:

Code: Alles auswählen

list = [0,1,2]
list[0] #=>0
list[1] #=>1
Das sollte alles sein, was du benötigst.

Verfasst: Donnerstag 3. Mai 2007, 10:14
von silky vanilla

Code: Alles auswählen

line.split()

ok, aber wie lege ich dann feste wo ich genau aufteile?

Verfasst: Donnerstag 3. Mai 2007, 10:23
von BlackJack
Die Methode nimmt ein Argument entgegen. Wurde von Rebecca und EyDu aber schon gezeigt.

Verfasst: Donnerstag 3. Mai 2007, 10:47
von silky vanilla
ich hab jetz daran weiter gearbeitet. da kommt jetzt eine Fehlermeldung: Token Error: EOF in multi-line statement??

Code: Alles auswählen

inp = open ("RefSeq2Entrez.HS.txt","r")      # Datei zum Lesen oeffnen
outp = open ("RefSeq2Entrez.HS.neu.txt","w") # neue Datei zum Schreiben oeffnen(fuer Kopie)

header = inp.readline().strip('\n\r')
header = [col.upper() for col in header.split('\t')]
out.write(header[1]+'\t'+header[2]
          
for line in inp.readlines():                 # erzeugt Liste von Zeilen
   data = line.split ('\t')                  # Datei aufteilen nach Tabulator
   Gene = data [0]                           
   ID = data [1]
   new_data = [Gene,ID]
   out.write(new_data)

Verfasst: Donnerstag 3. Mai 2007, 10:54
von N317V
Du hast beim Schreiben der header beim out.write die schließende Klammer vergessen.

edit: Nachdem Dein Code jetzt in Python-Tags steht, wäre das Zeile 6