尝试排除:sre_constants.error
Try-Except: sre_constants.error
我必须验证从文件导入的一些日期,这些日期有不同的格式。例如 %Y/%m/%d 和 %d/%m/%Y。问题是我必须重新格式化它们才能将它们彼此分开等等。
我发现我需要使用 Try/Except,但是当我使用以下代码时(其中 dates[1] 是所有日期):
更新:
我正在尝试使用不同的代码来更改 strptime 和 strftime 的错误格式。但是,我不知道它是否是在 except 中使用 strptime/strftime 的好方法? except 是否仅用于打印等?
代码:
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')
第一个 except 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 line in data_file:
line = (line.decode('utf-8').strip())
if line.startswith('#'):
pass
else:
names, birthdates, residences, genders = line.split('#')
try:
datetime.strptime(birthdates, '%d/%m/%Y')
except:
try:
bad_format = birthdates
birthdates = datetime.strptime(bad_format, '%Y/%m/%d').strftime('%d/%m/%Y')
except ValueError:
bad_format_letters = birthdates
if bad_format_letters in bad_format_letters:
birthdates = datetime.strptime(bad_format_letters, '%d. %B %Y').strftime('%d/%m/%Y')
nameslist.append(names)
birthdateslist.append(birthdates)
residenceslist.append(residences)
genderslist.append(genders)
我必须验证从文件导入的一些日期,这些日期有不同的格式。例如 %Y/%m/%d 和 %d/%m/%Y。问题是我必须重新格式化它们才能将它们彼此分开等等。
我发现我需要使用 Try/Except,但是当我使用以下代码时(其中 dates[1] 是所有日期):
更新:
我正在尝试使用不同的代码来更改 strptime 和 strftime 的错误格式。但是,我不知道它是否是在 except 中使用 strptime/strftime 的好方法? except 是否仅用于打印等?
代码:
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')
第一个 except 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 line in data_file:
line = (line.decode('utf-8').strip())
if line.startswith('#'):
pass
else:
names, birthdates, residences, genders = line.split('#')
try:
datetime.strptime(birthdates, '%d/%m/%Y')
except:
try:
bad_format = birthdates
birthdates = datetime.strptime(bad_format, '%Y/%m/%d').strftime('%d/%m/%Y')
except ValueError:
bad_format_letters = birthdates
if bad_format_letters in bad_format_letters:
birthdates = datetime.strptime(bad_format_letters, '%d. %B %Y').strftime('%d/%m/%Y')
nameslist.append(names)
birthdateslist.append(birthdates)
residenceslist.append(residences)
genderslist.append(genders)