我读一个JSON文件与下面的结构内的JSON文件:的Python 3阅读缺失对象行
[{"id":1,"gender":"Male","first_name":"Andrew","last_name":"Scott","email":"[email protected]","ville":"Connecticut"},
{"id":3,"first_name":"Mary","last_name":"Richards","email":"[email protected]","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
所以,在这种情况下,我不能使用像读取值的默认值之类的东西,因为我需要为我的方法发送一些价值。
你们中的一些人会知道当我们缺少对象时应该如何阅读这种文件的最佳方式。谢谢
答案球员之前,你应该知道,我必须定义“性别”的默认值的方法,瞧我的方法: –
你所要求的是不明确的。您有一种方法可以始终为性别字段赋予一个值,但是在某些情况下,您的json没有性别字段。现在,你需要处理这些情况(这绝不应该由于你的'definegender()')而发生,但不想使用错误处理和默认值......所以,你期望的结果是什么? – mrnfrancesco
@mrnfrancesco这里是事情。我需要阅读文件并逐行检查字段以创建一个名为“person”的类对象,以确保总是性别为M或F或UNKNOWN。我创建了此方法。事情是,我不能只是将字段传递给我的方法cuz有时它不是来自源文件。 :( –