Множественная попытка ... за исключением того, что оператор блока вызывает еще одну ошибку - PullRequest
0 голосов
/ 09 мая 2020

Моя многократная попытка ... except блок не работает, и я не уверен, почему:

from datetime import datetime

class Format_DateTime:
    def __init__(self):
        pass

    def __call__(self, text):
        text = text.replace(".", "-")
        text = text.replace("/", "-")
        text = text.replace(" ", "-")
        try: output = datetime.strptime(text, '%d-%m-%Y')
        except ValueError: output = datetime.strptime(text, '%d-%b-%Y')
        except: output = "Please input date as follows: day mth year, e.g. 07 Mar 2020"
        return output

'''EXAMPLE USAGE:'''
if __name__ == "__main__":
    format_datetime = Format_DateTime()
    print(format_datetime('8 04 20'))

Приведенный выше код предназначен для вывода моего сообщения об ошибке, но выдает еще один ValueError исключение, как мне заставить его выкидывать мое сообщение?

1 Ответ

0 голосов
/ 09 мая 2020

Для каждой попытки преобразования даты требуется собственный обработчик исключений. В любом случае лучше не помещать код try / except в одну строку (он лучше читается и его легче выполнять в отладчике), но для этой проблемы вам необходимо

def __call__(self, text):
    text = text.replace(".", "-")
    text = text.replace("/", "-")
    text = text.replace(" ", "-")
    try: 
        output = datetime.strptime(text, '%d-%m-%Y')
    except ValueError: 
        try:
            output = datetime.strptime(text, '%d-%b-%Y')
        except ValueError:
            output = "Please input date as follows: day mth year, e.g. 07 Mar 2020"
    return output
...