python - 如何解析降价类型表,并找到某个值?
问题描述
我有一张关于 git 问题的表格,其中包含有关每周工人的数据。
用markdown编写的表格,如下所示:
开始 | 结束 | 主要 | 子
-- | -- | -- | --
1/30 | 2/6 | 爱丽丝 | 鲍勃
2/6 | 2/13 | 查理 | 戴夫
我可以获取当前日期,并且可以从 rest api 获取该降价文本。
我从 rest api 得到的是一个字符串,它用 \r\n 分隔行。
我想做的更多是找出每周工人,但我坚持这一点。
有什么好主意吗?
谢谢 :)
解决方案
对于进一步的应用,我认为您应该将表变成记录,每条记录作为字典,其键是列的名称。
首先,通过以下方式获取表的标题:
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'}]
推荐阅读
- css - CSS列数列表问题
- java - 如何在 Firebase-Android 中链接 2 个 EventListener,以便第一个在第二个完成之前不会继续?
- android - 是否可以停止空闲以完成 AsyncTask?
- c# - 如何在 C# 中有效地获取、处理和保存巨大的记录集?
- android - 如何在 android 上使用 grahpview 在折线图中绘制范围线?
- apache-kafka - Spring Cloud kafka Stream - 如何为同一频道使用两个不同的 kafka 集群?
- c - 您可以将不带方括号或下标的数组添加到整数吗?结果是什么?
- javascript - 根据复选框的状态工作 javascript
- networking - 是否在 OSI 模型的每一层添加/删除了标头?
- perl - 如何将转义的 t 转换为制表符