
[{"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文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)