вид csv столбцом

Я хочу отсортировать таблицу 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
  • Датой является ISO 8601, поэтому я могу отсортировать его довольно легко без парсинга: 22.04.2003, например.
  • Я хочу отсортировать по дате, новейшие записи сначала
  • Как я получаю этого читателя в поддающуюся сортировке структуру данных? Я думаю с некоторым усилием, я мог сделать datelist: datelist + = дата, разделение и вид. Однако я должен повторно определить полную запись в таблице CSV. Это только сортирует список вещей.
  • csv, кажется, не имеет созданный в сортировке функции

Оптимальное решение состояло бы в том, чтобы иметь клиент CSV, который обрабатывает файл как база данных. Я не нашел ничего как этот.

Я надеюсь, что кто-то знает некоторое хорошее волшебство сортировки здесь;)

Спасибо,

Marius

27
задан wishi 20 January 2010 в 09:47
поделиться

2 ответа

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

или использовать лямбда

sortedlist = sorted(reader, key=lambda row: row[3], reverse=True)
66
ответ дан 28 November 2019 в 04:18
поделиться

Читатель действует как генератор. В файле с некоторыми поддельными данными:

>>> 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']]
12
ответ дан 28 November 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: