SS17:刻舟求剑怪 json?¶
0.7 个葫芦¶
- 学员曰,希望自己在 gitlab 上创建 issue 的个数.
- 其采取的方法是,将包含目标信息的数据从 gitlab api 取回.
- 因为 api 可以通过 url 指定特定时间段的创建 issue 数据.
- 该学员便按自然周顺序,将自己 7 周内的 issue 数据取回,并存放在 7 个不同的 list 中.
- 一个巨大的麻烦产生了:
- issue 数据内包含非创建行为 issue 的行为,需要把非创建行为过滤掉.
- 而过滤非创建行为数据,等于需要清洗数据,即,清洗 7 个 list?!
[
{"author_name": "bear", "action_name": "opened", "created_at": "2019-09-12T00:02:04.724Z", "target_title": "lpthw ex02 study drill 里的 mistakes ?"},
{"author_name": "bear", "action_name": "opened", "created_at": "2019-09-11T14:42:17.054Z", "target_title": "如何管理多版本 Python?"},
{"author_name": "bear", "action_name": "opened", "created_at": "2019-09-09T09:09:01.520Z", "target_title": "[info]izhangshiying hello world"},
{"author_name": "bear", "action_name": "closed", "created_at": "2019-09-09T05:27:51.772Z", "target_title": "5d[ASK]如何获取每次 commit 的具体内容?"}]
1.锅从天降¶
- 直觉的嗯哼肯定是,那不如一开始就把数据全放入 1 个 list,直接清洗这 1 个 list.
- 然而,学员被蟒营安利了网红模块 json 后,一门心思得把锅甩给了 json.
- 学员的思路是,
- json 是万能的/强大的/好用的
- 只要数据能 load 进 json
- 神奇的 json 一定会让统计变得简单起来!
- 于是乎,针对清洗数据的需求,学员却发问
- '为啥我的 7 个 list 不能被 json.load()?'
- '为啥我这儿报错
json.decoder.JSONDecodeError
?'
2.主持公道¶
- 大妈无奈学员清奇脑回路,回复曰:
- 统计和什么数据格式导入并无关联;
- 你的 json 导入总是失败, 和 json 本身无关, 只是因为不是 json 而已;
- 更进一步:
- 为什么是 7 个独立文件?
- 什么是统计?
- 你的目标数据包含在哪些文件中?
json.decoder.JSONDecodeError
和你的 json 文件有关嘛?- ...
3.刻舟求剑¶
- 刻舟求剑是怎么产生的?
- 为何大家反复忽视真正的问题,而对与结果无关的细节抓耳挠腮?
- 为何大家习惯将自己直觉设想的第一个方案,就当成了唯一方案然后拼命要完成这一方案?
- 为何大家不管是否和目标一致, 也不管自己是否能完成,一定要在小船上刻字,也不真正去寻找那把丢失的宝剑?
- 刻舟求剑如何破?
- 诚如大妈所曰, 会编程, 只是能自信的将目标问题分解为自己能力可达的系列小问题
- 这些小问题本身和目标问题是同构的
- 也就是说, 是对等的, 解决这些小问题, 大目标也就解决了
- 当目标/能力和时间相互矛盾时, 必须明确一个不能变的,然后灵活调节其它的...
- 诚如大妈所曰, 会编程, 只是能自信的将目标问题分解为自己能力可达的系列小问题
- 具体到这个案例,思路很简单:
- 问题出在,输入的数据存在冗余数据.
- 那么,如何清洗冗余数据?
- 进一步,如何方便得清洗冗余数据?
- 最后,清洗获取到干净好用的数据后,再统计之...
自怼圈/年度番新
关于 ~ DebugUself with DAMA ;-)
点击注册~> 获得 100$ 体验券:
订阅 substack 体验古早写作:
关注公众号, 持续获得相关各种嗯哼:
蟒营®编程思维提高班Python版
**2021.01.11** 因大妈再次创业暂停定期开设, 转换为预约触发:- + 扫描预约入群, 学员每满 42 人即启动新一期训练营 ;-)
-
+ 任何问题, 随时邮件提问可也:
askdama@googlegroups.com