1

这是另一个可能非常简单的问题,但到目前为止我还没有找到任何解决方法。

我正在尝试将 14 天添加到 2000 个列表(每个列表为)中的某些日期,并将['number1','number2','Day Month Year']新日期作为值放在每个列表的末尾(即每个列表变为 ['number1', 'number2', 'Day Month Year', 'Day Month Year']到目前为止,我得到的是:

from datetime import timedelta
listf=[]
z=range(len(hinfo))
for i in z:
    datetime.datetime.strptime(hinfo[i][2],'%d %b %y')
    listf.append(hinfo[i][2]+timedelta(days=14))

但这会引发错误“ValueError:未转换的数据仍然存在:01”。列表中的所有日期都应该没问题,所以我不知道为什么会出现错误。如果这只是一个简单的错误,请原谅初学者:)

谢谢!

4

2 回答 2

0

如您在问题中指定的那样,将新日期附加到原始列表的正确代码:

from datetime import timedelta
import datetime

hinfo = [['C148', 'W29', '08 August 2001'], ['Q964', 'R72', '21 May 2003']]

for i, h in enumerate(hinfo):
    if h[2] == '': # error checking
        del hinfo[i]
        continue
    d = datetime.datetime.strptime(h[2], '%d %B %Y')
    d += timedelta(days=14)
    h.append(d.strftime('%d %B %Y'))

print hinfo

对我来说[['C148', 'W29', '08 August 2001', '22 August 2001'], ['Q964', 'R72', '21 May 20 03', '04 June 2003']],如果我正确理解了你的问题,这就是你想要的。

如果你得到一个错误,很可能是输入不是你说的,或者认为它是。

于 2012-06-27T11:21:09.853 回答
0

您没有使用 strptime 的结果,但这不是您从 strptime 收到错误的原因。错误是因为您想要 %Y 而不是 %y。你想要这样的东西:

listf = []
for h in hinfo:
    d = datetime.datetime.strptime(h[2], "%d %b %Y")
    listf.append(d + timedelta(days=14))

%y 是两位数的年份,%Y 是四位数的年份。

于 2012-06-27T10:54:51.080 回答