我的程序以以下形式接收数据:
LASTNAME|FIRSTNAME|GENDER|DOB
我要做的第一件事是使用正则表达式来检测分隔符并拆分字段。我允许空格、逗号或管道作为分隔符。我知道哪个字段是DOB,并且已经打印出来以确保我没有处理错误的字段。你知道吗
我的try代码如下:
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()
。我真的不知道为什么会失败。你知道吗
@jornsharpe是对的。您正在尝试将MM/DD/YYYY字符串解析为DD/MM/YYYY。如果所有日期的格式都相同,则应使用
'%d/%m/%Y'
作为格式字符串。你知道吗相关问题 更多 >
编程相关推荐