使用标准输入的python对csv进行排序

时间:2016-10-09 18:26:03

标签: python sorting csv

这是我的python脚本,用于按列从stdin读取的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 

它就像排序了两个文件并合并它。这是读者的缓冲区大小还是排序方法的问题?

按字母顺序排序,而非按数字排序

1 个答案:

答案 0 :(得分:1)

  

按字母顺序排序,而非按数字排序

您必须排序列值转换为整数才能进行数字排序。我已将sort函数替换为lambda,其中包含转换为int

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