@error404: Woher kommen die Hex-Daten? Wer hat sich dieses Format ausgedacht? Und warum ist das Format konfigurierbar? Wie sieht die Konfigurationsdatei des Programms aus, das die Daten erzeugt?
Wenn Du Dir die Konfigurationsdatei selbst ausdenken kannst, warum nimmst Du dann kein Format, das sich einfach lesen läßt? JSON!
Variablennamen sind dazu da, den Sinn eines Programms zu verstehen. Wenn die Konfiguration einfach »data« heißt, dann trägt das nichts zum Verständnis bei. Eher im Gegenteil.
Variablen werden in Python dann eingeführt, wenn sie gebraucht werden und nicht schon 20 Zeilen davor. »count = 0« wird gar nicht gebraucht, weil später die Variable mit einem anderen Wert belegt wird. Die while-Schleife sollte eine for-Schleife sein. Will man eine Liste von Hinten durchgehen, dann nimmt man »reversed«:
Code: Alles auswählen
#!/usr/bin/python
import json
hexdata = []
with open("hexdatei", "r") as lines:
for line in lines:
hexdata.append(line.rstrip())
names_and_places = []
with open("config", "r") as lines:
for line in lines:
names_and_places.append(line.rstrip())
for text in reversed(hexdata):
tu_was_mit_text(text)
Statt bei jeder Hex-Zeile die Konfiguration neu zu parsen, macht man das einmal, am besten gleich beim Einlesen. Du solltest Dich dringend mit den Methoden, die ein String so mit sich bringt, auseinandersetzen. Dieses Indexgefummel ist fast nicht lesbar. Dass man nicht Variablen durchnummeriert und dass man keinen Code kopiert und leicht abwandelt, wurde Dir glaube ich schonmal gesagt. Das Aufspalten vom Hex-String hab ich Dir ja schon gezeigt:
Code: Alles auswählen
print(json.dumps({k: int(text[s:e], 16) for k, (s,e) in felder.items()}))
Jetzt wäre nur noch Dein Aufgabe, die Konfigurationsdatei gleich als Wörterbuch, im richtigen Format zu schreiben, oder eine Funktion zu schreiben, die Deine jetzige Konfigurationsdatei in solch ein Wörterbuch überführt.