xlrd / xlutils重新排序电子表格行

时间:2012-09-28 02:35:35

标签: python

所以我有一个excel电子表格,其中包含我想要对电子表格进行排序的特定列。该列有3种不同的起始字母组合,B,C,E。我想按B然后按E排序,然后是以C开头的所有行。我需要从列中对整个表进行排序

任何人都知道如何在Python中执行此操作?

2 个答案:

答案 0 :(得分:1)

将您的工作表读入行lst列表,特定列的列索引为index

import xlrd
wb = xlrd.open_workbook('myworkbook.xls')
sh = wb.sheet_by_index(0)
lst = [sh.row(n) for n in xrange(sh.nrows)]
searchdict = dict(B=1, E=2, C=3)
lst.sort(key=lambda row: searchdict.get(row[index][0], 4))

最后一行中的[0]访问您字段的第一个字符,然后在字典中查找。 dict.get参数中的默认值4将所有非拟合行放在新列表的末尾。没有经过详细测试,但应该让你明白。

答案 1 :(得分:0)

您可以使用how to sort xls file column wise and write it to another file with entire row using python?

之类的内容

在你的排序功能(键)中,我会做这样的事情(没有测试,添加错误检查)进行比较。如果你想实现__gt__和__lt__那么它们与>基本相同切换到<

    order = ['B','E','C'] #Set the order for the first letter here
    def gt( a, b ):

        if a[0] == b[0]:
          return a > b   #Same letter, use normal sorting
        else:
          return order.index(a[0]) > order.index(b[0])   #Sort using first letter

注意:如果您的问题不是要求排序通过第一个字母,那么请使用其他答案。