使用 Python 分析 Google Calender 日程
![使用 Python 分析 Google Calender 日程](https://static001.geekbang.org/infoq/18/1849b86de0d393ab2aa5fae5fab16932.png)
1. 缘起
制作 2019 年终工作总结 PPT 的时候想放入一些统计图,例如本年度参与的会议种类及数目。由于平时使用 Google Calender 安排日程,所以尝试从中分析。
2. 过程
2.1 直接搜索
第一个想法是搜索相关关键字,但是手动统计太麻烦了。
![](https://static001.geekbang.org/infoq/a5/a5df139e785a5631dc1e4feee771fb89.png)
2.2 导出数据
在查看 Google Calender 的设置的时候,发现能够导出数据。
![](https://static001.geekbang.org/infoq/e8/e878c996a42aa8860118f94c9be0e372.png)
导出的文件是一个以 Google 账号使用的邮箱命名的 ZIP 压缩包,在上面选择导出了几个日历,这里就会有几个 ics 后缀的文件。直接打开 ics 文件的话,会唤起 Win 10 的邮件应用中执行日历导入操作(需要确认)。
![](https://static001.geekbang.org/infoq/4f/4faa01ef3f1683b1f007a2b3012a5967.png)
直接用文本编辑器打开 ics 文件,会发现里面都是格式化的文本,包含使用 Google Calender 以来的全部数据。
![](https://static001.geekbang.org/infoq/90/90dffa12335227557a3b2e8c7b80711b.png)
2.3 分析数据
分析记录,尝试找出规律。发现近期的记录基本都是这样的格式:
更早的日历事件的字段会有差别(应该是更新过数据结构),但是我只需要 2019 年的,所以不需要关心。
根据我的需求,我只需要提取出这三个字段的内容即可:
DTSTART 事件开始时间
LOCATION 事件地点
SUMMARY 事件标题
2.4 提取记录
使用 Python 提取数据,用到的代码如下:
唯一的难点在于多行文本的正则提取。
提取的结果格式如下:
由于安排日程的时候比较随意,命名不规范,所以无法做到完整的分类统计,这次只能先人工分类统计。
3. 后续计划
1. 制定日程名称规范,例如参考 tagLyst 使用“#”在标题中标记标签,便于之后的统计。
2. 在 Google Calender 中建立其他日历,将工作和生活分开记录。
3. 完善代码:
直接使用 Python 生成统计图。
……
版权声明: 本文为 InfoQ 作者【Roc】的原创文章。
原文链接:【http://xie.infoq.cn/article/2b4e83e55150e8cbd35945cb9】。
本文遵守【CC BY-SA】协议,转载请保留原文出处及本版权声明。
评论