1

これはおそらく非常に単純な別の質問ですが、これまでのところ、修正するものを見つけることができませんでした。

2000個のリストのリスト(各リストは)の一部の日付に14日を追加し、新しい日付を各リストの最後に値として配置しようとしています['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

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は2桁の年、%Yは4桁の年です。

于 2012-06-27T10:54:51.080 に答える
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 に答える