首页 > 解决方案 > 如何解析降价类型表,并找到某个值?

问题描述

我有一张关于 git 问题的表格,其中包含有关每周工人的数据。

用markdown编写的表格,如下所示:

开始 | 结束 | 主要 | 子
-- | -- | -- | --
1/30 | 2/6 | 爱丽丝 | 鲍勃
2/6 | 2/13 | 查理 | 戴夫

我可以获取当前日期,并且可以从 rest api 获取该降价文本。

我从 rest api 得到的是一个字符串,它用 \r\n 分隔行。

我想做的更多是找出每周工人,但我坚持这一点。

有什么好主意吗?

谢谢 :)

标签: pythonmarkdown

解决方案


对于进一步的应用,我认为您应该将表变成记录,每条记录作为字典,其键是列的名称。

首先,通过以下方式获取表的标题:

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'}]

推荐阅读