Проверка даты на Python не работает - PullRequest
0 голосов
/ 20 ноября 2018

Моя программа принимает данные в виде:

LASTNAME|FIRSTNAME|GENDER|DOB

Первое, что я делаю, это использую регулярные выражения для обнаружения разделителя и разделения полей.Я допускаю пробел, запятую или трубу в качестве разделителя.Я знаю, какое поле является DOB, и распечатал его, чтобы убедиться, что я не имею дело с неправильным полем.

Мой код попытки выглядит следующим образом:

try:
    #check if the fields are good
    fields = re.split(r'[ ,|]+', line)
except:
    #if not good: put it on the failure list
    flist.append(line.replace('\n', ''))

LastName  = fields[0]
FirstName = fields[1]
Gender    = fields[2]
DOB       = fields[3]

#one last try... make sure the DOB is good
try:
    datetime.datetime.strptime(DOB, '%m/%d/%Y')
except:
    flist.append(line.replace('\n', ''))
    raise ValueError("DATE NOT IN RIGHT FORMAT")

Я загрузил программунесколько строк, и в частности ту, которую я передаю:

NAME|FAKE|M|09/20/1987

ValueError: time data '09/20/1987' does not match format '%d/%m/%Y'

Я распечатал поля и попытался преобразовать «DOB» в строку.Я также попытался добавить .date() до конца.Я действительно не уверен, почему это потерпит неудачу.

1 Ответ

0 голосов
/ 20 ноября 2018

@ Джоншарп прав.Вы пытаетесь проанализировать строку MM / DD / YYYY как DD / MM / YYYY.Если все ваши даты имеют одинаковый формат, вы должны использовать '%d/%m/%Y' в качестве строки формата.

...