首页 > 解决方案 > Jsonlines 文件导致 KeyError Python

问题描述

我有一个我正在加载的 json 文件,以便通过某个名为“sender_id”的键进行过滤。我似乎可以过滤任何其他键,但是在过滤“sende_id”时会导致 KeyError: 'sender_id'

我的python脚本如下:

import json_lines

 with open('specifications.jsonl', 'rb') as f:
    for item in json_lines.reader(f):
    print(item["sender_id"])

我的 jsonlines 文件示例如下:

{"status": "Inactive", "no_of_rejected_submissions": 0, "name": 
 "multi senders 6", "data_type": "acute", "author": "JKS", 
"

标签: pythonjsonpython-3.xpython-2.7jsonlines

解决方案


正如您所指出的,第一行没有 key sender_id,因此当您尝试访问不存在的键时,该item对象会吐出。KeyError

如果将第二行移到第一行,那么它至少会打印出item["sender_id"]for the line (ie RAK) 的结果,然后吐出KeyError.

如果您想要的行为是“如果存在则打印,如果不存在则跳过”,那么您可以dict.get,例如:

with open('specifications.jsonl', 'rb') as f:
    for item in json_lines.reader(f):
        print(item.get("sender_id")) 

推荐阅读