我正在读取一个结构如下的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"}]
所以,正如你在第二行看到的,字段“gender”不存在,我意识到,因为我读取文件的代码在这一行出错了。在
我的代码:
^{pr2}$我得到了错误:-在
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'
在回答伙计们之前,你应该知道我有一个方法来定义“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
因此,在本例中,我不能使用默认值之类的方法来读取值,因为我需要向我的方法发送一些值。在
你们中的一些人会知道,当我们丢失对象时,最好的方法就是读取这种文件。谢谢
为什么不用if语句来简化呢?在
虽然这已经有了一个完美的答案,但我的观点是,也可以有其他选择。这里是:
这叫做错误处理。阅读以下文档: https://docs.python.org/3.6/tutorial/errors.html
更新:你是这个意思吗? 更新2已纠正的错误
^{pr2}$更新3:(供将来使用)
默认情况下,get()将返回最简单的解决方案
为什么不在
dict.get
中为字典使用默认值?在由于您想进一步转换输入,可以将两个
^{pr2}$dict.get
嵌套在一起,第一个以None
作为默认值,以及一个新的表,如下所示:(请注意,您不再需要复杂的性别转换方法)
相关问题 更多 >
编程相关推荐