Moin,
Der PHP-Weg funktioniert aber so nicht in Python (zumindest nicht für Listen, wohl aber für Dictionarys).
Danke für den Hinweis. Dictionarys hatte ich bei meinem Blitz-Einleitungskurs wahrscheinlich übersehen.
("Dive Into Python" ist auch ein nicht zu verachtendes Python-Buch. Für dein Problem: das Lists-Kapitel.)
Danke für den Link.
Du greifst auf einen Index zu, der nicht im Array vorhanden ist. - Nebenbei: Anders als bei PHP kann eine Python-Liste auch keine Lücken im Index aufweisen, weil die Index-Werte echte Postionsnummern sind und nicht einfach nur ein Key mit numerischem Inhalt.
Das dürfe dann eine Rolle spielen, wenn man ein Element aus der Liste löscht, richtig?
Ich würde hier nur einmal splitten sowie die Punkte vorher entfernen und nicht jedes Mal extra (es sei denn, du hast Felder, in denen sie drin bleiben sollen).
Hm. Ich dachte, dass es speicherschonender ist, wenn man diese Liste nicht in einer Variable speichert. Aber da leidet wohl die Performance.
Ich habe das Skrip jetzt bis bis zu dieser Stelle fertig (data enthält alle meine Werte, wie gewünscht). Funktionieren tuts also, aber findest du den Code sinnvoll? Oder gibts da noch Optimierungsspielraum:
import sys;
try:
handle = open("input.txt")
except:
sys.exit('No input file. Aborting...')
data = []
for line in handle:
if line.strip() != "":
curline = line.replace(".", "").split(";");
curset = { 'ea': curline[0].strip(),
'okz': curline[1].strip(),
'k': int(curline[2].strip()),
'v': int(curline[3].strip()) }
data.append(curset);
for item in data
print(item)
(die strip()-Funktionen sind aufgrund der etwas kruden Export-Funktion des Oracle SQL Developers nötig, jedenfalls kann ich mir anders nicht die Struktur der TXT erklären, die ich bekommen habe)
Eine Frage noch: Die Integer-Parse-Funktion wirft in meinem Fall keinen Error, da die Werte alle umgeformt werden können. Aber generell: gibt es eine Art ternären Operator mit dem man direkt vor der Zuweisung prüfen kann, ob int() überhaupt möglich ist und andernfalls 0 übergeben? Ich habe nichts gefunden was mir dahingehend hilft. Ich habe nur dieses Statement gefunden, welches aber trotzdem zum Abbruch des Programms führt, wenn die int()-Funktion eine Exception wirft.
Grüße Marco