0

我有一个我正在加载的 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", 
"
4

2 回答 2

0

正如您所指出的,第一行没有 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")) 
于 2019-08-28T08:00:36.933 回答
0

使用get获取密钥的方法来避免KeyError异常。

item.get('sender_id')

如果键存在,它将返回值,否则它将返回默认值,在这种情况下为 None 。

您还可以使用以下方法设置默认值,

item.get('sender_id', 'NA')  # Here default value is NA
于 2019-08-28T07:58:27.837 回答