我的程序以以下形式接收数据:
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()
附加到末尾。我真的不确定为什么会失败。
答案 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")
作为格式字符串。