【发布时间】:2015-11-05 11:14:32
【问题描述】:
我必须验证从文件中导入的一些日期,这些日期有不同的格式。例如 %Y/%m/%d 和 %d/%m/%Y。问题是我必须重新格式化它们才能将它们分开等。
我发现我需要使用 Try/Except,但是当我使用以下代码时(其中 dates[1] 是所有日期):
更新:
我正在尝试使用不同的代码来使用 strptime 和 strftime 更改错误的格式。但是,我不知道它是否是在除法中使用 strptime/strftime 的好方法?除了仅用于打印等吗?
代码:
for dates in data_from_file:
dates = (dates[1])
print(dates)
try:
validate_format = datetime.datetime.strptime(dates, '%d/%m/%Y')
except ValueError:
datetime.datetime.strptime(dates, '%Y/%m/%d').strftime('%d/%m/%Y')
except ValueError:
datetime.datetime.strptime(dates, '%d. %B %Y').strftime('%d/%m/%Y')
第一个 ValueError 除外,因为我看到 time data *format* does not match '%d/%m/%Y' 错误的格式发生了变化。有三种不同的格式,所以我也必须更改最后一种。但它似乎记得除了 ValueError 之外的第一个格式?
现在它说:ValueError: time data '%d. %B %Y' (in numbers, ofc) does not match format '%Y/%m/%d'
【问题讨论】:
-
是什么让您相信您可以通过这种方式传递格式?
-
重构为
for循环date_formats,看看情况如何。 -
更新代码,请看一下。
标签: python-3.x strptime try-except