Seite 1 von 1

Python CSV-Sortierung

Verfasst: Mittwoch 29. September 2010, 08:25
von pooner
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

Re: Python CSV-Sortierung

Verfasst: Mittwoch 29. September 2010, 08:53
von ntrunk
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

Re: Python CSV-Sortierung

Verfasst: Mittwoch 29. September 2010, 09:01
von 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.

Re: Python CSV-Sortierung

Verfasst: Mittwoch 29. September 2010, 09:26
von pooner
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 ;-)

Re: Python CSV-Sortierung

Verfasst: Mittwoch 29. September 2010, 09:37
von pooner
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

Re: Python CSV-Sortierung

Verfasst: Mittwoch 29. September 2010, 10:25
von BlackJack
@pooner: Aber Du brauchst keine zwei Sortierungen. Du kannst auch *einmal* nach beiden Spaltenwerten sortieren.