Я хочу отсортировать таблицу CSV по дате. Начатый являющийся простой задачей:
import sys
import csv
reader = csv.reader(open("files.csv"), delimiter=";")
for id, path, title, date, author, platform, type, port in reader:
print date
Я использовал модуль CSV Python для чтения в файле с той структурой:
id;file;description;date;author;platform;type;port
Оптимальное решение состояло бы в том, чтобы иметь клиент CSV, который обрабатывает файл как база данных. Я не нашел ничего как этот.
Я надеюсь, что кто-то знает некоторое хорошее волшебство сортировки здесь;)
Спасибо,
Marius
import operator
sortedlist = sorted(reader, key=operator.itemgetter(3), reverse=True)
или использовать лямбда
sortedlist = sorted(reader, key=lambda row: row[3], reverse=True)
Читатель действует как генератор. В файле с некоторыми поддельными данными:
>>> import sys, csv
>>> data = csv.reader(open('data.csv'),delimiter=';')
>>> data
<_csv.reader object at 0x1004a11a0>
>>> data.next()
['a', ' b', ' c']
>>> data.next()
['x', ' y', ' z']
>>> data.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
с использованием оператора. Igngetter AS IGNACIO предлагает:
>>> data = csv.reader(open('data.csv'),delimiter=';')
>>> import operator
>>> sortedlist = sorted(data, key=operator.itemgetter(2), reverse=True)
>>> sortedlist
[['x', ' y', ' z'], ['a', ' b', ' c']]