使用多于一列对excel数据进行sorting

我想sorting使用2或3列的Excel数据(所以如果你愿意嵌套sorting)。 目前发生的是我得到一个文本文件(有时超过1)与日志条目,然后我必须将条目转换成一个pipe理的Excel电子表格。

我设法做到这一点,但现在我的经理要我也分别按“date”和“时间”列sorting。

所以要打破它,我只是想弄清楚如何做到这一点。

要求:

通过多列对csv或excel电子表格进行sorting,并将其写入文档(最好是相同types的文档)。

码:

目前我的代码是:

import csv, os import operator testcsv= open('test.csv', 'r') csvSort = csv.reader(testcsv, delimiter=",") sort = sorted(csvSort,key=operator.itemgetter(0,1)) for eachline in sort: print eachline 

这适用于“打印”和检查。 但是我不能把这个数据写回Excel电子表格。

如果我这样做,它全部进入1行而不是多行。 当我写文件时,这是我使用的代码:

 dest = "C:/Test2.csv" for eachline in sort: if not os.path.exists(dest): fileToCreate = open(dest, 'w') fileToCreate.writelines(eachline) else: fileToCreate = open(dest, 'a+') fileToCreate.writelines(eachline) fileToCreate.close() 

也许如果有人有更好的select给我使用或添加一些可以帮助我的东西,我将不胜感激。

testing正在使用的input数据文件

 05/02/2015,20:22:24,201534 07/02/2015,20:23:24,201534 05/02/2015,20:23:24,201534 06/02/2015,20:23:24,201534 05/02/2015,20:24:24,201534 13/02/2015,20:24:24,201534 13/02/2015,20:24:24,201534 12/02/2015,20:21:24,201534 01/02/2015,20:21:24,201534 21/02/2015,20:21:24,201534 21/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 13/02/2015,20:21:24,201534 05/02/2015,20:21:24,201534 05/02/2015,20:21:24,201534 05/02/2015,20:21:24,201534 05/02/2015,20:18:24,201534 05/02/2015,20:18:24,201534 05/02/2015,20:18:24,201534 05/02/2015,20:22:24,201534 

您可以重复使用csv.writer写列表的整个sorting列表。 它有一个叫做writerows()的函数。 示例 –

 dest = "C:/Test2.csv" with open(dest,'w') as f: writer = csv.writer(f) writer.writerows(sort) 

请注意,您不需要指定分隔符,默认分隔符是逗号。

目前,当你在每eachline列表中使用writelines时,它会同时写入列表中的每个元素,但不会添加所需的换行符。 所以所有的数据看起来都是在一条线上。 您应该使用csv.writer写回csv / excel文件。