尝试排除: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)