首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成KeyError Python的Jsonlines文件

生成KeyError Python的Jsonlines文件
EN

Stack Overflow用户
提问于 2019-08-28 15:47:33
回答 2查看 115关注 0票数 0

我有一个json文件,我加载它是为了过滤掉一个名为"sender_id“的键。我似乎可以过滤任何其他键,但当涉及到过滤"sende_id“时,结果是一个KeyError:'sender_id‘

我的python脚本如下:

代码语言:javascript
复制
import json_lines

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

我的jsonline文件示例如下:

代码语言:javascript
复制
{"status": "Inactive", "no_of_rejected_submissions": 0, "name": 
 "multi senders 6", "data_type": "acute", "author": "JKS", 
"
EN

回答 2

Stack Overflow用户

发布于 2019-08-28 15:58:28

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

代码语言:javascript
复制
item.get('sender_id')

如果键存在,它将返回值,否则将返回默认值,在本例中为None。

您还可以使用以下命令设置默认值:

代码语言:javascript
复制
item.get('sender_id', 'NA')  # Here default value is NA
票数 0
EN

Stack Overflow用户

发布于 2019-08-28 16:00:37

正如您所指出的,第一行没有键sender_id,因此当您试图访问不存在的键时,item对象将输出KeyError

如果您将第二行移动到第一行,那么它至少会打印出该行的item["sender_id"]结果(即RAK),然后输出KeyError

如果你想要的行为是"print If exist,skip if not exist",那么你可以dict.get,例如:

代码语言:javascript
复制
with open('specifications.jsonl', 'rb') as f:
    for item in json_lines.reader(f):
        print(item.get("sender_id")) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57687374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档