Моя программа принимает данные в виде:
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()
до конца.Я действительно не уверен, почему это потерпит неудачу.