我认为我对try / except块在python中的工作方式有一些误解。
我得到的输入是日期,格式为YYYY-MM-DD或YYYY-MM或YYYY。我需要检查的是确切交付的内容(无论我只有一天还是一个月+天还是一个完整的日期)。
def check(date_text):
year_delivered = True
month_delivered = True
day_delivered = True
try:
date = datetime.datetime.strptime(date_text, '%Y-%m-%d')
except ValueError:
day_delivered = False
try:
date = datetime.datetime.strptime(date_text, '%Y-%m')
except ValueError:
month_delivered = False
try:
date = datetime.datetime.strptime(date_text, '%Y')
except ValueError:
year_delivered = False
return year_delivered, month_delivered, day_delivered
我想使用datetime和flags进行检查。因此,据我了解,date_text = "2018"
的前两个try / except块应引发异常,并更改日和月标志的值。但是,它们仍然是True,我不太明白为什么。
提前谢谢