我写了一个代码对前5列中的数据进行排序,这是一个csv文件(管道分隔符)。
import csv
import operator
with open('DDD_Strips_by_Sub_Channel_final.csv',mode='r') as f,
open('DDD_Strips_by_Sub_Channel_sorted.csv','w') as final:
writer = csv.writer(final, delimiter='|')
reader = csv.reader(f, delimiter='|')
header=next(reader,None)
next(reader)
sorted1 = sorted(reader, key=lambda row: (row[0],row[1],row[2],row[3],row[4]))
if header:
writer.writerow(header)
for row in sorted1:
writer.writerow(row)
它对数据进行了正确的排序,但是通过在每行之间插入新行来生成输出文件
任何人都可以帮助获得正确的输出而无需多余的行。
答案 0 :(得分:1)
如果您使用的是var count = 4 * 1000 * 1000;
var map = new Map();
for (var i=0; i < count; ++i) {
map.set("" + i + "ABCDEF"[i%6], [ Math.random(), Math.random() ]);
}
//console.log(map);
console.log("done!");
,则必须使用python 2.x
模式而不是wb
打开文件。它将变成w
将行更改为此,
open('DDD_Strips_by_Sub_Channel_sorted.csv','wb')
如果您使用的是with open('DDD_Strips_by_Sub_Channel_final.csv',mode='rb') as f,
open('DDD_Strips_by_Sub_Channel_sorted.csv','wb') as final:
,则需要使用python 3.x
参数newline
希望能解决您的问题。