繁体   English   中英

在以下情况下,如何在Python3中编写异常?

[英]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()

现在,我不知道在找不到出生日期/地点时添加异常处理,以使代码不会给出任何出生值。 有人可以指出我正确的方向吗?

代替:

dict_name['gebort'] += ", Taufe: %s" % place.get_title()

你可以写

dict_name['gebort'] = dict_name.get('gebort', '') + ", Taufe: %s" % place.get_title()

如前所述,给自己命名是不明智的,还是上面的代码是从dict派生的? 使用.get可以定义如果没有该名称的键(例如空字符串)时返回的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM