Python检查日期格式无法正常工作

时间:2018-11-20 17:56:46

标签: python python-datetime

我的程序以以下形式接收数据:

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 :(得分:1)

@jonrsharpe是正确的。您正在尝试将MM / DD / YYYY字符串解析为DD / MM / YYYY。如果所有日期的格式都相同,则应使用createhrly_0595quants <- function(df, hourcolumn, value, qtype, metadata_to_add) { value <- rlang::sym(value) df %>% group_by_at(vars(hourcolumn)) %>% summarize(`05%`=quantile(!!value, probs=0.05, type =qtype), `95%`=quantile(!!value, probs=0.95, type = qtype), median = median(!!value), n=n()) %>% mutate(qtype = qtype, metadata_to_add = metadata_to_add) } createhrly_0595quants(df_x, "hrly_gmt", "myvalues", 4, "version x.2") 作为格式字符串。