2016-04-21 5 views
0

Koordinaten I haben eine Textdatei wie folgt geordnet:Lesen von Text-Datei Zeile für Zeile in Python und in struct Speichern wie für die grafische Darstellung

A,1,1 

B,1,5 

C,3,7 

D,5,5 

E,5,1 

Der Buchstabe a Knotenlabel ist, wobei die erste Zahl ist eine x-Koordinate, und die zweite Zahl ist eine y-Koordinate.

Ich versuche, diese "Knoten" als Teile verschiedener Arrays zu speichern (dh Buchstaben-Labels werden in einem Array in einer Elementposition gespeichert, x-Koordinaten werden in einem Array in einer passenden Elementposition gespeichert, und y-Koordinaten sind gespeichert in Position), um ein Anpassungselement

So für meinen ersten Knoten würde ich habe: an Position 0 in nodeLabel[]

A ist, ist an der Position 0 in xCoord[]

1 ist auf Position 0 in yCoord[]

Dies beinhaltet ein paar Konzepte aus dem, was ich verstehe. Zuerst muss ich die Datei öffnen und davon lesen.

  • die Bedürfnisse Datei in ein Komma zu lesenden oder einem \ n und speichern die Werte

  • dann muss es Arrays schalten und auf das nächste Komma oder \ n zu lesen und speichern die Werte.

  • Dann muss es Arrays wechseln und bis zum nächsten Komma oder \ n lesen und die Werte speichern.

  • Wenn die .lesen Funktion schlägt eine neue Zeile dann muss es auf die nächste Zeile gehen

Mein Problem ist, dass ich weiß nicht, wie Python zu sagen, wo ich bestimmen will Werte gespeichert und in welches Array sie gespeichert werden sollen. Ich habe einige Informationen über die Verwendung einer split() Funktion gefunden. Würde mir das erlauben, die read() Funktion zu erklären, wenn ich aufhören soll?

Im Moment habe ich dies:

def file_stuff(): 
with open('Offices.txt') as input_data: 
    for line in input_data 
     if line.strip() == ',', '\n': 
      break 
     elif 

Ich bin mir nicht sicher, was entweder als meine elif Zustand zu setzen.

Wäre das sinnvoller als Struktur, da ich eine GUI implementieren muss, um die Knoten grafisch darzustellen?

Antwort

1

Etwas wie folgt aus:

def file_stuff(): 
    nodes = [] 
    X = [] 
    Y = [] 
    with open('Offices.txt') as input_data: 
     for line in input_data: 
      n, x, y = line.split(',') 
      nodes.append(n) 
      X.append(int(x)) 
      Y.append(int(y)) 

Dies ist stark vereinfacht, da es nicht die Gültigkeit der Eingabedatei nicht überprüft, aber sollte das tun, was Sie, wenn die Datei formatiert ist richtig wollte. Ein weiteres Problem ist, dass Ihre Funktion keinen Wert zurückgibt, wenn Sie weitere Manipulation zu tun, wollen Sie so etwas wie hinzufügen sollte:

return (n, X, Y) 
+0

diese Räume hier sein sollte, wenn meine Textdatei keine hat? 'n, x, y = line.split (',')' Kann ich den Return-Befehl hinzufügen, um x und y außerhalb der Funktion zu manipulieren? – arj

+1

Diese Leerzeichen sind nur für die Lesbarkeit des Codes vorhanden und haben keine Funktion in einem Python-Programm (es sei denn, sie befinden sich in einem String). Sie sollten mit einem grundlegenden Python-Lernprogramm beginnen, das mit der Syntax beginnt, bevor Sie komplexere Probleme lösen. – Cyb3rFly3r

+0

Ich habe ein Tutorial durchgelesen, leider läuft mir die Zeit knapp. Wie auch immer, ich glaube, ich verstehe das jetzt und was append macht, nachdem ich die Listen ausgedruckt habe. Gibt es eine Möglichkeit, diese in Node-Strukturen zu übersetzen, so dass ich sie mit Networkx grafisch darstellen kann? – arj

Verwandte Themen