我在列表中有一个日期文本文件,如下所示:
values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05',
'1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29',
'1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22',
'1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15',
'1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08',
'1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04']
我想要做的是遍历每个值,使用此代码使用datetime
获取格式。这应该允许我根据值列表绘制这个日期列表。
我正在尝试在接下来的几行代码中执行此操作(这只是为了使列表格式正确,我还没有得到绘制图形的代码!)
for line in values1:
datetime.strptime(line, '%Y-%m-%d').date()
但是它给了我以下错误:
ValueError: time data 'Date' does not match format '%Y-%m-%d'
我不确定为什么?
ValueError:时间数据'日期'不符合格式'%Y-%m-%d'
你说你正在阅读文件中的日期列表。可能是其中一行有日期而不是日期值,或者可能是标题行。
您提供的代码有效。检查文件中的输入值
由于文本文件中的标题会导致错误,我已设法使其正常工作!
values1=calues1[1::]
for line in values1:
datetime.strptime(line, '%Y-%m-%d').date()
答案 0 :(得分:2)
正如错误所说
ValueError: time data 'Date' does not match format '%Y-%m-%d'
你说你正在阅读文件中的日期列表。可能是其中一行包含单词Date
而不是日期值,或者可能是标题行。
您提供的代码有效。检查文件中的输入值
答案 1 :(得分:1)
此代码适用于我
from datetime import datetime
values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05', '1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29', '1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22', '1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15', '1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08', '1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04']
for line in values1:
print datetime.strptime(line, '%Y-%m-%d').date()
输出
1999-02-11
1999-02-10
1999-02-09
1999-02-08
1999-02-05
1999-02-04
也许你的问题是导入。
P.S。 python 2.7
答案 2 :(得分:1)
确保从datetime模块导入日期时间对象(以下代码段中的第一行):
>>> from datetime import datetime
>>>
>>> values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05', '1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29', '1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22', '1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15', '1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08', '1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04']
>>>
>>> for line in values1:
... x = datetime.strptime(line, '%Y-%m-%d').date()
... print x
...
1999-02-11
1999-02-10
1999-02-09
1999-02-08
1999-02-05
1999-02-04
1999-02-03
1999-02-02
1999-02-01
1999-01-29
1999-01-28
1999-01-27
1999-01-26
1999-01-25
1999-01-22
1999-01-21
1999-01-20
1999-01-19
1999-01-18
1999-01-15
1999-01-14
1999-01-13
1999-01-12
1999-01-11
1999-01-08
1999-01-07
1999-01-06
1999-01-05
1999-01-04
答案 3 :(得分:1)
我认为问题出在您的导入中。您必须在datetime中导入datetime模块。
使用:
import datetime
for line in values1:
print datetime.datetime.strptime(line, '%Y-%m-%d').date()
或
from datetime import datetime
for line in values1:
print datetime.strptime(line, '%Y-%m-%d').date()
在python 2.7和3上都有效(使用print()代替python 3)。