【问题标题】:How can I parse a markdown type table, and find a certain value?如何解析降价类型表,并找到某个值?
【发布时间】:2020-04-27 02:22:14
【问题描述】:

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

用markdown写的表格,如下:

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

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

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

我想做的更多是找出每周工人,但我被困在这个问题上。

有什么好主意吗?

谢谢:)

【问题讨论】:

  • 你试过了吗? arr = [[x for x in ss.split('|')] for ss in str.split('\n')]
  • 谢谢,有帮助!

标签: python markdown


【解决方案1】:

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

首先,通过以下方式获取表头:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 2017-04-11
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多