Python3中下面的case怎么写异常?
How to write an exception in the following case in Python3?
我需要修改 python 代码(由程序员提供),我想将其用于我的家谱项目。我是 python 的新手,开始能够阅读代码了。但是,我不知道如何解决以下问题。
我在执行代码时收到以下错误消息:
self['gebort'] += ", Taufe: %s" % place.get_title()
KeyError: 'gebort'
问题是,对于我数据库中的一个人来说,只有洗礼日期(这里是:Taufe)是已知的,但不知道出生日期。这是代码失败的原因。
这是代码基础的相关片段:
birth_ref = person.get_birth_ref()
if birth_ref:
birth = database.get_event_from_handle(birth_ref.ref)
self['gjahr'] = birth.get_date_object().get_year()
if self['gjahr'] >= 1990:
self['mindj'] = True
self['gebdat'] = dd.display(birth.get_date_object())
self['plaingebdat'] = self['gebdat']
place_handle = birth.get_place_handle()
self['geborthandle'] = place_handle
place = database.get_place_from_handle(place_handle)
if place:
self['gebort'] = place.get_title()
self['plaingebort'] = self['gebort']
for eventref in person.get_event_ref_list():
event = database.get_event_from_handle(eventref.ref)
if event.get_type() in (gramps.gen.lib.EventType.CHRISTEN, gramps.gen.lib.EventType.BAPTISM):
self['gebdat'] += ", Taufe: %s" % dd.display(event.get_date_object())
place_handle = event.get_place_handle()
place = database.get_place_from_handle(place_handle)
if place:
self['gebort'] += ", Taufe: %s" % place.get_title()
现在,我不知道在没有找到出生时添加异常处理 date/place 这样代码就不会给出任何出生值。有人能给我指出正确的方向吗?
而不是:
dict_name['gebort'] += ", Taufe: %s" % place.get_title()
你可以写
dict_name['gebort'] = dict_name.get('gebort', '') + ", Taufe: %s" % place.get_title()
如前所述,命名某些东西 self 并不聪明,或者上面的代码是从 class 派生自 dict 的?使用 .get 您可以定义在没有该名称的键的情况下返回的内容,在示例中为空字符串。
我需要修改 python 代码(由程序员提供),我想将其用于我的家谱项目。我是 python 的新手,开始能够阅读代码了。但是,我不知道如何解决以下问题。
我在执行代码时收到以下错误消息:
self['gebort'] += ", Taufe: %s" % place.get_title()
KeyError: 'gebort'
问题是,对于我数据库中的一个人来说,只有洗礼日期(这里是:Taufe)是已知的,但不知道出生日期。这是代码失败的原因。
这是代码基础的相关片段:
birth_ref = person.get_birth_ref()
if birth_ref:
birth = database.get_event_from_handle(birth_ref.ref)
self['gjahr'] = birth.get_date_object().get_year()
if self['gjahr'] >= 1990:
self['mindj'] = True
self['gebdat'] = dd.display(birth.get_date_object())
self['plaingebdat'] = self['gebdat']
place_handle = birth.get_place_handle()
self['geborthandle'] = place_handle
place = database.get_place_from_handle(place_handle)
if place:
self['gebort'] = place.get_title()
self['plaingebort'] = self['gebort']
for eventref in person.get_event_ref_list():
event = database.get_event_from_handle(eventref.ref)
if event.get_type() in (gramps.gen.lib.EventType.CHRISTEN, gramps.gen.lib.EventType.BAPTISM):
self['gebdat'] += ", Taufe: %s" % dd.display(event.get_date_object())
place_handle = event.get_place_handle()
place = database.get_place_from_handle(place_handle)
if place:
self['gebort'] += ", Taufe: %s" % place.get_title()
现在,我不知道在没有找到出生时添加异常处理 date/place 这样代码就不会给出任何出生值。有人能给我指出正确的方向吗?
而不是:
dict_name['gebort'] += ", Taufe: %s" % place.get_title()
你可以写
dict_name['gebort'] = dict_name.get('gebort', '') + ", Taufe: %s" % place.get_title()
如前所述,命名某些东西 self 并不聪明,或者上面的代码是从 class 派生自 dict 的?使用 .get 您可以定义在没有该名称的键的情况下返回的内容,在示例中为空字符串。