2016-10-09 4 views
0

Это мой питон скрипт для сортировки по столбцам CSV файл считывается из стандартного ввода:сортировки CSV с питоном из стандартного ввода

with sys.stdin as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    sortedlist = sorted(reader, key=operator.itemgetter(2)) 
    for row in sortedlist: 
    print(','.join(row)), 
    print('\n'), 

я запускаю команду для сортировки по 3-ю колонка (ноль индексируется 2):

./sorter1.py <test.csv> test_sorted.csv 

и отсортированный test_sorted.csv файл:

31,53,101,122 
88,95,103,59 
66,58,104,50 
93,46,105,52 
88,88,118,107 
**115,57,31,34** 
110,87,36,63 
32,108,36,107 
75,35,57,35 
99,46,57,28 
41,35,67,59 
108,99,98,35 
36,66,98,60 

это как сортируется два файла и объединить его. Это вопрос размера буфера читателя или вопрос сортировки метода?

Это сортирует по алфавиту численно не

+2

Где 'column' определено и какое значение это? –

ответ

1

Это сортирует по алфавиту численно не

Вы должны отливать значения столбцов сортировки в целое число для сортировки численно. Я заменил функцию сортировки с lambda, которая включает в себя преобразование в int:

sortedlist = sorted(reader, key=lambda x: int(x[2]))