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
Примечание. Если в вашем вопросе НЕ предлагалось выполнить сортировку с пропуском первой буквы, перейдите к другому ответу.