Python 3读取行内缺少对象的json文件

Python 3读取行内缺少对象的json文件,第1张

概述我正在阅读具有以下结构的json文件: [{"id":1,"gender":"Male","first_name":"Andrew","last_name":"Scott","email":"ascott0@shutterfly.com","ville":"Connecticut"},{"id":3,"first_name":"Mary","last_name":"Richards","emai 我正在阅读具有以下结构的Json文件:

[{"ID":1,"gender":"Male","first_name":"Andrew","last_name":"Scott","email":"ascott0@shutterfly.com","ville":"Connecticut"},{"ID":3,"first_name":"Mary","last_name":"Richards","email":"mrichards2@japanpost.jp","ville":"Minnesota"}]

所以,你可以在第二个“行”中看到字段“性别”它不存在.我意识到因为我的代码读取文件在这一行出错了.

我的代码:

import Jsondef Jsonreader():##Reader for Json files    ##Open files using Json library    with open('cust_data.Json') as file:        data = Json.load(file)    resultList = List()    for line in data:        print(line["ID"],line["gender"])

我收到了错误: –

C:/xxxxx/x.py1 MaleTraceback (most recent call last):2 Femalefile "C:/xxxxx/x",line 67,in <module>Jsonreader()file "C:/xxxxx/x",line 56,in Jsonreaderprint(line["ID"],line["gender"])KeyError: 'gender'

在回答之前,你应该知道我有一种方法来定义“性别”中的默认值,瞧我的方法:

def definegender(x):    if x is None:        x = 'unkNown'        return x    elif (x =='Male') or (x=='Female'):#not None:        return {         'Male':'M','Female': 'F'        }.get(x)    else:        return x

因此,在这种情况下,我无法使用类似读取值的默认值,因为我需要向我的方法发送一些值.

当你们缺少对象时,你们中的一些人会知道应该如何阅读这种文件的最佳方法.谢谢

解决方法 虽然这已经有了完美的答案,但我的观点是,也可以有替代品.所以这里是:

for line in data:    try:        print(line["ID"],line["gender"])    except KeyError:        print(line["ID"],"Error!!! no gender!")

这称为ErrorHandling.阅读文档:
https://docs.python.org/3.6/tutorial/errors.html

更新:你的意思是这个?
update2纠正了错误

try:    gender = definegender(line["gender"])except KeyError:    gender = definegender(None)print(line["ID"],gender)

update3 :(以备将来使用)

as .get()默认情况下返回None,最简单的解决方案是

gender = definegender(line.get("gender"))print(line["ID"],gender)
总结

以上是内存溢出为你收集整理的Python 3读取行内缺少对象的json文件全部内容,希望文章能够帮你解决Python 3读取行内缺少对象的json文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1193991.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存