1

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

任何人都知道如何在 Python 中做到这一点?

4

2 回答 2

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]一行中的 访问字段的第一个字符,然后在字典中查找该字符。参数中的默认值 4dict.get将所有不合适的行放在新列表的末尾。没有详细测试,但应该让你明白。

于 2012-09-28T03:02:01.467 回答
0

您可以使用诸如如何对 xls 文件列进行排序并使用 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

注意:如果您的问题不是要求对第一个字母进行排序,那么请选择另一个答案。

于 2012-09-28T02:59:21.500 回答