Daten in list-Datei sotieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ManuelH
User
Beiträge: 2
Registriert: Mittwoch 2. August 2017, 15:45

Hallo zusammen,
ich bin relativ neu in Python und möchte nun in einer Liste Einträge sortieren. Es liegt eine .lst Datei vor die ungefähr folgenden Aufbau hat:

[codebox=text file=liste.txt]
Name Typ Größe

Abc X 1
Bde Y 4
Cab Z 1
Dab X 2
Ebm Y 5

[/code]

Ich möchte die Einträge zuerst nach Typ und anschließend nach Größe ordnen. Allerding fehlt mir nun der Ansatz wie man hierbei vorgehen könnte. Ich habe mich etwas in reguläre Ausdrücke eingelesen, komme aber nicht sorecht weiter, da ich ja nicht einzelne Strings rausfiltern will, sondern letzendlich eine ganze Zeile. Habt ihr eventuell ein paar Gedankenanstöße wie ich bei dem Problem vorgehen könnte? Ich möchte keinen fertigen Code nur etwas Starthilfe ;)
Vielen Dank im Vorraus
BlackJack

@ManuelH: Du musst das Problem in kleinere Teilprobleme zerlegen und die Teilprobleme dann wieder in kleinere Teilprobleme, solange bis einzelne Teilprobleme jeweils mit einer Funktion mit wenigen Zeilen Code lösbar sind. So eine Funktion schreibt man dann und dann testet man sie. Erst wenn sie funktioniert, macht man mit der nächsten Funktion weiter. Irgendwann setzt man dann Teillösungen aus den bereits vorhandenen Teillösungen zusammen, und am Ende hat man dann eine Gesamtlösung.

Zwei ”Sollbruchstellen” für die Aufteilung sind oft die Übergänge zwischen Dateneingabe und Datenausgabe, also die drei Bereiche Eingabe, Verarbeitung, Ausgabe. In Deinem Fall wäre das eine Funktion die sich ihrerseits auf drei Funktionen abstützt. 1. Laden der Datei in eine für die Verarbeitung sinnvolle Datenstruktur. 2. Verarbeitung, in diesem Fall das sortieren der Zeilen. 3. Aus den verarbeiteten Daten wieder eine Datei erstellen.

Konkteter Hinweis für die Verarbeitung: Listen haben eine `sort()`-Methode und die kennt ein `key`-Argument. Für dieses Argument kannst Du dann auch gleich wieder eine Funktion schreiben. :-)
ManuelH
User
Beiträge: 2
Registriert: Mittwoch 2. August 2017, 15:45

Vielen Dank für die ausführliche Antwort. Ich werde mich die nächste Zeit dransetzen und eventuell noch konkretere Fragen Stellen :)
Antworten