2015-09-27 233 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