我有一个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"])我的jsonline文件示例如下:
{"status": "Inactive", "no_of_rejected_submissions": 0, "name":
"multi senders 6", "data_type": "acute", "author": "JKS",
"发布于 2019-08-28 15:58:28
使用get方法获取密钥以避免KeyError异常。
item.get('sender_id')如果键存在,它将返回值,否则将返回默认值,在本例中为None。
您还可以使用以下命令设置默认值:
item.get('sender_id', 'NA') # Here default value is NA发布于 2019-08-28 16:00:37
正如您所指出的,第一行没有键sender_id,因此当您试图访问不存在的键时,item对象将输出KeyError。
如果您将第二行移动到第一行,那么它至少会打印出该行的item["sender_id"]结果(即RAK),然后输出KeyError。
如果你想要的行为是"print If exist,skip if not exist",那么你可以dict.get,例如:
with open('specifications.jsonl', 'rb') as f:
for item in json_lines.reader(f):
print(item.get("sender_id")) https://stackoverflow.com/questions/57687374
复制相似问题