对于进一步的应用,我认为你应该将表变成记录,每条记录作为字典,其键是列的名称。
首先,通过以下方式获取表头:
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'}]