xlrd / xlutils переупорядочивание строк электронной таблицы

Итак, у меня есть таблица Excel, в которой есть определенный столбец, по которому я хочу отсортировать таблицу. Колонка имеет 3 различные комбинации начальных букв, B,C,E. Я хочу заказать B, затем E, а затем все строки, начинающиеся с C. Мне нужно отсортировать всю таблицу из столбца

Кто-нибудь знает, как это сделать в Python?

2 ответа

Решение

Прочитайте свой лист в список строк 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] в последней строке осуществляется доступ к первому символу вашего поля, который затем ищется в словаре. Значение по умолчанию 4 в dict.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

Примечание. Если в вашем вопросе НЕ предлагалось выполнить сортировку с пропуском первой буквы, перейдите к другому ответу.

Другие вопросы по тегам