2015-09-27 3 views
2

Я хочу сортировать данные в CSV-файле в алфавитном порядке в соответствии с содержанием в первом столбце. Например, если файл содержал:Сортировка файла csv по столбцу

city/month,Jan,Feb,Mar,Apr 

Melbourne,41.2,35.5,37.4,29.3 

Brisbane,31.3,40.2,37.9,29 

Darwin,34,34,33.2,34.5 

он будет отсортирован как:

city/month,Jan,Feb,Mar,Apr 

Brisbane,31.3,40.2,37.9,29 

Darwin,34,34,33.2,34.5 

Melbourne,41.2,35.5,37.4,29.3 

, что я сделал до сих пор, сортирует правильно, но он не возвращает ответ правильно, вместо того, чтобы возвращая его в формате таблицы, он возвращает все как список - любая идея, почему это так?

import csv 
import operator 

def sort_records(csv_filename, new_filename): 

    f = open(csv_filename) 

    csv1 = csv.reader(f, delimiter = ',') 

    new_filename = sorted(csv1) 

    return new_filename 

    f.close() 
+0

Возможный дубликат http://stackoverflow.com/questions/2089036/sorting-csv-in-python – Ultimater

ответ

3
>>> import csv 
>>> import operator 

>>> def sort_records(csv_filename, new_filename): 
...  with open(csv_filename, 'r') as i, open(new_filename, 'w') as o: 
...   reader = csv.reader(i, delimiter = ',') 
...   writer = csv.writer(o, delimiter=',') 
...   writer.writerow(next(reader)) # header row 
...   writer.writerows(sorted(reader, key=operator.itemgetter(0))) 

>>> sort_records('a.csv', 'b.csv') 
+0

я не получаю ошибку атрибута из этого: «_csv.reader» объект не имеет атрибут 'next' – Saltharion

+0

какая у вас версия python? Он отлично работает в 2.7.10 – ozgur

+0

Я использую Python 3 – Saltharion

Смежные вопросы