所以我有一个 excel 电子表格,它有一个我想要对电子表格进行排序的特定列。该列有 3 种不同的起始字母组合,B、C、E。我想按 B 排序,然后按 E 排序,然后是所有以 C 开头的行。我确实需要从列中对整个表进行排序
任何人都知道如何在 Python 中做到这一点?
所以我有一个 excel 电子表格,它有一个我想要对电子表格进行排序的特定列。该列有 3 种不同的起始字母组合,B、C、E。我想按 B 排序,然后按 E 排序,然后是所有以 C 开头的行。我确实需要从列中对整个表进行排序
任何人都知道如何在 Python 中做到这一点?
将您的工作表读入行列表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
将所有不合适的行放在新列表的末尾。没有详细测试,但应该让你明白。
您可以使用诸如如何对 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
注意:如果您的问题不是要求对第一个字母进行排序,那么请选择另一个答案。