Try-Except:sre_constants.error

时间:2015-11-05 11:14:32

标签: python-3.x strptime try-except

我必须验证从文件导入的某些日期,日期有不同的格式。例如%Y /%m /%d和%d /%m /%Y。问题是我必须重新格式化它们以便能够通过彼此分开它们等。

我发现我需要使用Try / Except,但是当我使用以下代码时(其中date [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'

1 个答案:

答案 0 :(得分:0)

结果:

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)