for循环中的Python日期转换失败

for循环中的Python日期转换失败,python,time,Python,Time,我以为我已经做到了,但一些基本的事情让我绊倒了 我有一个日期列表,如下所示: dates[0:5] ['September 30 2016', 'September 6 2016', 'September 13 2016', 'October 13 2016', 'October 13 2014'] 我不仅想把它们转换成结构化的时间,还想把它们转换成Excel可以理解的东西——因为这就是我的合作者正在使用的东西,Excel没有将上面的条目和185个其他条目识别为日期(无论出于什么原因

我以为我已经做到了,但一些基本的事情让我绊倒了

我有一个日期列表,如下所示:

dates[0:5]

['September 30 2016',
 'September 6 2016',
 'September 13 2016',
 'October 13 2016',
 'October 13 2014']
我不仅想把它们转换成结构化的时间,还想把它们转换成Excel可以理解的东西——因为这就是我的合作者正在使用的东西,Excel没有将上面的条目和185个其他条目识别为日期(无论出于什么原因……我试过)

因此,我编写了一些测试代码:

date_in = time.strptime(dates[3], "%B %d %Y")
date_out = time.strftime("%Y-%m-%d", date_in)
print(date_out)

2016-10-13
可爱。但是,当我将它放入
for
循环中以遍历字符串时,我不断得到一个错误

以下是循环:

stripped = []
for item in dates:
    raw = time.strptime(item, "%B %d %Y")
    stripped.append(raw)
下面是错误:

ValueError: unconverted data remains:  updated September 30 2016
请注意,我知道上面的
for
循环没有完成我说过的我想做的事情:我试图让它回到失败点。我最初的代码是:


您的格式有一个小错误。只需将格式从
“%b%d%Y”
更改为
“%b%d%Y”
。此外,我还添加了一个简短的片段:

import time

dates = [
    'September 30 2016',
    'September 6 2016',
    'September 13 2016',
    'October 13 2016',
    'October 13 2014']

#                                                      ↓
print([time.strftime("%Y-%m-%d", time.strptime(date, "%B %d %Y")) for date in dates])

# ['2016-09-30', '2016-09-06', '2016-09-13', '2016-10-13', '2014-10-13']
这是对的。我将代码更改为包含
try/except

for item in dates:
    try:
        raw = time.strptime(item, "%B %d %Y")
        stripped.append(raw)
    except ValueError:
        print(item, dates.index(item))
我还遇到了一些我从未见过的数据/输入问题。(这就是我工作太快的原因。)

以下是前三条记录在案:

August 26 2016 updated September 30 2016 23
Septmeber 1 2016 25
12/1/2016 46

现在juanpa让我意识到我可以使用
try/except
,我将添加一些代码,将第三行这样的日期更改为我想要的格式,而不使用真正古怪的行

您的字符串中似乎有一些无关的内容,如
“2016年9月30日更新”
,您是否可以使用
尝试:except
并在
except
块中打印有问题的
?感谢您在原始问题@juanpa.arrivillaga.实际上,你是对的:问题在于输入。小错误在于我转录代码,而不是简单地复制和粘贴:我在发布问题时添加了错误!很抱歉
August 26 2016 updated September 30 2016 23
Septmeber 1 2016 25
12/1/2016 46