这是另一个可能非常简单的问题,但到目前为止我还没有找到任何解决方法。
我正在尝试在2000个列表的列表中添加14天(每个列表为['number1','number2','Day Month Year']
)并将新日期作为值添加到每个列表的末尾(即每个列表变为{ {1}})。
到目前为止我得到的是:
['number1', 'number2', 'Day Month Year', 'Day Month Year']
但这会引发错误'ValueError:未转换的数据仍为:01'。列表中的所有日期都应该没问题,所以我无法弄清楚为什么会出现错误。 如果这只是一个简单的错误,请原谅初学者:)
谢谢!
答案 0 :(得分: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是四位数年份。
答案 1 :(得分: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']]
,这就是你想要的。
如果您收到错误,则很可能输入不是您所说的,或者认为是。