2017-09-18 3 views
1

Ich bin noch neu zu Python, aber es für meine linguistische Forschung verwenden.Feed-Klasse von der Liste

So mache ich einige der Forschung in toponyms, und ich habe eine Liste von Eingangsdaten von einer topographischen Institution, die wie folgt aussieht: Official_Name, Tab, Dialect_Name, Tab, Administrative_district, Topographic_district, Y_coordinates, X_coordinates, Länge , Breite.

So definierte ich eine Klasse:

class MacroTop: 
     def __init__(self, Official_Name, Dialect_Name, Adm_District, Topo_District, Y, X, Long, Lat): 
      self.Official_Name = Official_Name 
      self.Dialect_Name = Dialect_Name 
      self.Adm_District = Adm_District 
      self.Topo_District = Topo_District 
      self.Y = Y 
      self.X = X 
      self.Long = Long 
      self.Lat = Lat 

Also, mit open(), wollte ich meine .txt Datei mit den Daten, ich es in die Klasse eine Schleife zu lesen, um laden verwenden, aber es hat nicht funktioniert.

Das Ergebnis, das ich möchte, ist in der Lage sein, auf ein Feature der Klasse, sagen wir Dialekt_Name, zuzugreifen und in der Lage sein, alle Einträge dieses Features durchzusehen. Ich kann das nur in der Schleife machen, aber ich wollte eine Klasse definieren, damit ich später noch mehr manipulieren kann.

meine Schleife:

with open("locLuxAll.txt", "r") as topo_list: 
    lines = topo_list.readlines() 
    for line in lines: 
     line = line.split('\t') 
     print(line) 
     print(line[0]) # This would access all the data that is characterized as Official_Name 

Ich habe versucht, eine weitere Schleife zu machen:

for i in range(0-len(lines)): 
     lines[i] = MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(line[4]), str(line[5]), str(line[6]), str(line[7])) 

Aber das scheint nicht zu funktionieren.

Antwort

0

Diese Linie versagt:

for i in range(0-len(lines)): 

Sie eine Schleife durch negative Zahl versuche ich denke, so wird der Ausgang eine leere Liste sein.

In [11]: [i for i in range(-200)] 
Out[11]: [] 

EDIT: Ihr Code erscheint mir nicht lesbar, Sie haben for i in range(len(lines)) aber in diesem for Schleife, sind Sie durch line Variable laufen, wo von ihm? Zuallererst würde ich nicht auf lines Liste schreiben, wie es von readlines kommt. Erstellen Sie eine neue Liste dafür, und Sie brauchen nicht i Variable, diese Zeilen werden in Reihenfolge sowieso gehalten werden.

class_lines = [] 
for line in lines: 
    class_lines.append(MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(line[4]), str(line[5]), str(line[6]), str(line[7]))) 

Oder auch mit Liste Verständnis:

class_lines = [MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(
    line[4]), str(line[5]), str(line[6]), str(line[7])) for line in lines] 
+0

Oh, sehe ich die dort Fehler. Änderte es in den Bereich (len (Zeilen). Aber immer noch, die Ausgabe ist nicht was ich wollte, da die Klasse nicht von den Daten gefüttert wird. Weitere Ideen? – MSam

+0

@ MSam gibt es logischen Fehler in Ihrem ursprünglichen Code, aber bitte überprüfen Sie meine aktualisierte Antwort, wenn das hilft – Pythonist

+0

Mybe Ich sollte meine erste Suche korrigieren, ich denke, dass ich das nicht gut ausgedrückt habe – MSam

Verwandte Themen