使用Python从JSON文件读取数据

用户名

我有这样的datra结构:

"37_7009": [
    {
        "viewport_dimensions": {"width": 1583, "height": 798}, 
        "mouse_position": {"y": 1147, "x": 841}, 
        "node_data_attrs": {"groupid": "id_FW13-e052-7009-08", "rankgroupid": "rank_37"}
    }
]

和:

with gzip.GzipFile(args.file,'rb') as gzf:
    all_hovers = json.load(gzf)

如何读取node_data_attrs值?

for cords in all_hovers[userID]:
    x = cords["mouse_position"]["x"]
    y = cords["mouse_position"]["y"]
    viewport_x = cords["viewport_dimensions"]["width"]
    viewport_y = cords["viewport_dimensions"]["height"]
    data_attrs = cords["node_data_attrs"]["groupid"]

我得到以下回溯:

Traceback (most recent call last):
  File "opdracht2-3.py", line 86, in <module>
    main()
  File "opdracht2-3.py", line 66, in main
    print cords["node_data_attrs"]["groupid"]
KeyError: 'groupid'

这对于读取数据不起作用...有什么建议吗?

马丁·彼得斯(Martijn Pieters)

您的代码可以正常工作,似乎至少您的某些数据没有groupid密钥。

用于.get()解决此问题:

for cords in all_hovers[userID]:
    x = cords["mouse_position"]["x"]
    y = cords["mouse_position"]["y"]
    viewport_x = cords["viewport_dimensions"]["width"]
    viewport_y = cords["viewport_dimensions"]["height"]
    data_attrs = cords["node_data_attrs"].get("groupid")

如果缺少密钥,则设置data_attrsNone您可以通过将第二个参数传递给来将其设置为其他默认值dict.get()

    data_attrs = cords["node_data_attrs"].get("groupid", 'default value')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章