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.刻舟求剑

  • 刻舟求剑是怎么产生的?
    • 为何大家反复忽视真正的问题,而对与结果无关的细节抓耳挠腮?
    • 为何大家习惯将自己直觉设想的第一个方案,就当成了唯一方案然后拼命要完成这一方案?
    • 为何大家不管是否和目标一致, 也不管自己是否能完成,一定要在小船上刻字,也不真正去寻找那把丢失的宝剑?
  • 刻舟求剑如何破?
    • 诚如大妈所曰, 会编程, 只是能自信的将目标问题分解为自己能力可达的系列小问题
      • 这些小问题本身和目标问题是同构的
      • 也就是说, 是对等的, 解决这些小问题, 大目标也就解决了
      • 当目标/能力和时间相互矛盾时, 必须明确一个不能变的,然后灵活调节其它的...
  • 具体到这个案例,思路很简单:
    • 问题出在,输入的数据存在冗余数据.
    • 那么,如何清洗冗余数据?
    • 进一步,如何方便得清洗冗余数据?
    • 最后,清洗获取到干净好用的数据后,再统计之...



蟒营®编程思维提高班 Python版/第11期 正在报名

精品小班/ 每期<42人

扫描报名: 101camp12py

蟒营®式 原创课程

伴你重享学习乐趣

官网: py.101.camp

Reactivate Joy by Self-teching with You


任何问题可先进入知识星球(免费)咨询:
FAQ

关注公众号, 持续获得相关各种咨询:
mainium


追问

任何问题, 随时邮件提问可也:
askdama@googlegroups.com