Python CSV-Sortierung

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
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

Hi @All,

ich habe ein Problem und sehe den Wald vor lauter Bäumen nicht, daher benötige ich eure Hilfe.
Ich habe ein Programm, welches Daten aus einer DB liest und in eine CSV schreibt.
Diese CSV muss nun nach 2 Spalten sortiert werden.
Also hatte ich mir folgendes gedacht, basiertz auf einen Code-Schnipzel den ich gefunden habe

Code: Alles auswählen

def sort_csv(table,cols):        
       for col in reversed(cols):
           table = sorted(table, key=operator.itemgetter(col))
           return table


mydata = list(csv.reader(open(csvFile, 'rb')))
writer=init_CSV(str_name+"2")
for row in sort_csv(mydata, (6,1)):
       writer.writerow(row)

Leider funktioniert das ganze nicht. Habt ihr irgendwelche Tipps dazu?
Danke
ntrunk
User
Beiträge: 83
Registriert: Sonntag 7. September 2008, 23:09
Wohnort: Buchen (Odenwald)

Hi pooner,

die Problemstellung ist mir unklar und anhand deines Codes, der offensichtlich nicht tut, was er soll, kann ich auch nicht erkennen, was dein Ziel ist :wink: . Gib mal etwas mehr Info mit Beispieldaten vor und nach der Sortierung.

Gruß
Norbert
BlackJack

@pooner: Überleg mal wann das ``return`` ausgeführt wird. Und dann lies vielleicht mal die Doku zu `operator.itemgetter()` ob Du die Schleife tatsächlich brauchst.
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

thx,
also meine csv enthält die folgenden Spalten:
ID, Name, Status, Serial, User, Name2, Ort
Bsp:
23, Monitor, Aktiv, 1234567xx, Admin, monitor2, Raum 23

Jetzt möchte ich meine csv-Datei zuerst nach dem Raum, und dann nach der ID sortieren.

Meines Erachtens nach benötige ich die Schleife aus o.g. Grund (2Sortierungen). Return ist mir aus Versehen eingerückt, Sorry ;-)
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

Thx,

gelöst
return war auch im Code eingerückt :roll:

Ausserdem habe ich festgestellt, dass ich eine ABbruchbedingung nicht korrekt gesetzt hatte, Index out of Range :oops:
Korrigiert und jetzt scheint es zu laufen
BlackJack

@pooner: Aber Du brauchst keine zwei Sortierungen. Du kannst auch *einmal* nach beiden Spaltenwerten sortieren.
Antworten