Для дальнейших приложений, я думаю, вы должны сформировать таблицу, ставшую записями с каждой записью в виде словаря, ключом которого является имя столбца.
Сначала получите заголовки таблицы:
tableStr = 'start | end | main | sub'\
+ '\r\n' + '-- | -- | -- | --'\
+ '\r\n' + '1/30 | 2/6 | Alice | Bob'\
+ '\r\n' + '2/6 | 2/13 | Charlie | Dave'
headersStr = tableStr[:tableStr.find('\r\n')]
headers = [h.strip() for h in headersStr.split('|')]
затем проанализируйте таблицу с записями по:
records = []
for rowStr in tableStr.split('\r\n')[2:]:
row = [entry.strip() for entry in rowStr.split('|')]
record = {headers[i]:row[i] for i in range(len(headers))}
records.append(record)
print(records)
, который вы получите в консоли:
[{'start': '1/30', 'end': '2/6', 'main': 'Alice', 'sub': 'Bob'}, {'start': '2/6', 'end': '2/13', 'main': 'Charlie', 'sub': 'Dave'}]
Я не уверен, как вы определите weekly worker
, но вы могли бы сделать что-то с этим. Например:
reverseSortedBySub = sorted(records, key=lambda x: x['sub'], reverse=True)
print(reverseSortedBySub)
тогда вы получите:
[{'start': '2/6', 'end': '2/13', 'main': 'Charlie', 'sub': 'Dave'}, {'start': '1/30', 'end': '2/6', 'main': 'Alice', 'sub': 'Bob'}]