Python 3读取行内缺少对象的json文件
发布时间:2020-12-20 12:02:04 所属栏目:Python 来源:网络整理
导读:我正在阅读具有以下结构的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.
我正在阅读具有以下结构的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 json def 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.py 1 Male Traceback (most recent call last): 2 Female File "C:/xxxxx/x",line 67,in <module> jsonreader() File "C:/xxxxx/x",line 56,in jsonreader print(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.阅读文档: 更新:你的意思是这个? 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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |