我正在尝试使用2或3列对excel数据进行排序(如果愿意,可以使用嵌套排序)。 目前发生的事情是我得到一个包含日志条目的文本文件(有时超过1个),然后我必须将这些条目转换为托管的Excel电子表格。
我已设法做到这一点,但现在我的经理要我分别按“日期”和“时间”列对其进行排序。
所以要把它分解,我只想弄清楚我是怎么做到的。
要求:
通过多列对csv或excel电子表格进行排序,并将它们写入文档(最好是相同类型)。
CODE:
目前我的代码是:
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()
也许如果某人有更好的选择让我使用或添加一些可以帮助我的东西,我将不胜感激。
测试正在使用的输入数据文件
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
答案 0 :(得分:1)
您可以重复使用csv.writer
来回写整个排序列表。它有一个名为writerows()
的函数。示例 -
dest = "C:/Test2.csv"
with open(dest,'w') as f:
writer = csv.writer(f)
writer.writerows(sort)
请注意,您无需将分隔符指定为,
,默认分隔符为逗号。
目前,当您将writelines
与eachline
列表一起使用时,它会同时写入列表的每个元素,但不会添加所需的换行符。因此,所有数据似乎都在一行中。您应该使用csv.writer
来写回csv / excel文件。