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