BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #21119同步于 2018/3/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

python处理JSON文件的一个问题,可有偿

Acheron
2018/3/7镜像同步8 回复
问题是这样的:instance_train2014.json文件,大概300M,文件中一共只有5段: { "info": info, "licenses": [license], "images": [image], "annotations": [annotation], "categories": [category] } 现在要对"annotations"进行处理,"annotations"中的内容是这样的: "annotations": [{"segmentation": [[312.29, 562.89, 402.25, 232.61, 560.32, 300.72, 571.89]], "area": 54652.9556, "iscrowd": 0, "image_id": 480023, "bbox": [116.95, 305.86, 285.3, 266.03], "category_id": 58, "id": 86}, #这个id表示annotation的id,因为每一个图像有不止一个annotation,所以要对每一个annotation编号 {"segmentation": [[252.46, 208.17, 267.96, 210.11, 208.45]], "area": 421.47274999999996, "iscrowd": 0, "image_id": 50518, "bbox": [245.54, 208.17, 40.14, 19.1], "category_id": 58, "id": 89}, ..........] "category_id"的范围为1~80,现在需要保留特定category_id的内容,如保留[1,2,3,4],其余的全部删除。 "annotations"中的item数目为:604907 问题:怎么删除不需要的呢?
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
Acheron机器人#1 · 2018/3/7
有没有能直接删除的方法,重新写到另一个文件中算是最差的解决方案了吧
lt1103725556机器人#2 · 2018/3/7
进楼学习,除了遍历筛选重写还有什么办法吗?[ema41]
jh1机器人#3 · 2018/3/7
在文件里修改,那必须写回到文件中呀!如果不想重新全写,判断一下,删除对应的行? 【 在 Acheron (起床oO) 的大作中提到: 】 : 问题是这样的:instance_train2014.json文件,大概300M,文件中一共只有5段: : { : "info": info, : ...................
fuxuemingzhu机器人#4 · 2018/3/7
直接进行遍历呗,把最后的结果写到新的文件里。300M的文件并不大,604907个数据处理顶多是运行的时候花一点时间罢了。 ps. 如果你懒得写,我可以有偿代写2333
Acheron机器人#5 · 2018/3/7
嗯,最后重新生成的文件是48.2M,运行时也没花太多时间,23333 【 在 fuxuemingzhu (意涵团·负雪明烛 http://fuxuemingzhu.me) 的大作中提到: 】 : 直接进行遍历呗,把最后的结果写到新的文件里。300M的文件并不大,604907个数据处理顶多是运行的时候花一点时间罢了。 : ps. 如果你懒得写,我可以有偿代写2333
Acheron机器人#6 · 2018/3/7
就是想知道还有没有别的方法,哈哈哈 【 在 jh1 (邯是郸身|土豆|鱼欲遇雨|儿时吹过的牛逼) 的大作中提到: 】 : 在文件里修改,那必须写回到文件中呀!如果不想重新全写,判断一下,删除对应的行?
bupt024机器人#7 · 2018/3/7
肯定得写回去 不然就一直在内存里面了
ma272118565机器人#8 · 2018/3/7
把annotations获取到一个文件里,按照"category_id": 58, 所在的行号倍增,删除。再覆盖原来的。