sort csv by column

csv, parsing, python, sorting

Solution

Since `'date'` in column has index 3,

import operator
sortedlist = sorted(reader, key=operator.itemgetter(3), reverse=True)

or use lambda

sortedlist = sorted(reader, key=lambda row: row[3], reverse=True)

Problem

I want to sort a CSV table by date. Started out being a simple task: ``` import sys import csv reader = csv.reader(open("files.csv"), delimiter=";") for id, path, title, date, author, platform, type, port in reader: print date ``` I used Python's CSV module to read in a file with that structure: ``` id;file;description;date;author;platform;type;port ``` - The date is ISO-8601, therefore I can sort it quite easily without parsing: 2003-04-22 e. g. - I want to sort the by date, newest entries first - How do I get this reader into a sortable data-structure? I think with some effort I could make a datelist: datelist += date, split and sort. However I have to re-identify the complete entry in the CSV table. It's not just sorting a list of things. - csv doesn't seem to have a built in sorting function The optimal solution would be to have a CSV client that handles the file like a database. I didn't find anything like that. I hope somebody knows some nice sorting magic here ;)

Original source