0

文字列をPythonのdatetimeオブジェクトに解析しようとしていますが、これは次のコードです。

created = datetime.strptime(r.json()[x]["created_at"], "%a %b %d %H:%M:%S +0000 %Y") 

私が得るエラーは次のとおりです。

ValueError: time data '"Wed Jan 16 22:08:18 +0000 2013"' does not match format '%a %b %d %H:%M:%S +0000 %Y'

それは正しいはずです、明らかに私は何か間違ったことをしています。注意として、r.jsonはテキストをユニコードで返しますが、str()変換でも試してみました。

完全なプログラム:

import requests
from datetime import datetime
from simplejson import dumps

url = 'https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name='
username = 'gtklondike'
count = '5'

url += username + "&count=" + count

r = requests.get(url)

x = 0
while x < count:
    print "<div id='tw-body'>" + r.json()[x]["text"] + "</div>"
    created = datetime.strptime(dumps(r.json()[x]["created_at"]), "%a %b %d %H:%M:%S +0000 %Y") 
    print "<div id='tw-date'>Date: " + r.json()[x]["created_at"] + "</div><br />\n" # TMP --> until I get datetime working... but at least it shows you the date
    x = x + 1
4

3 に答える 3

3

文字列に余分な引用符のセットがあるように見えます-1つは文字列であることを示し、もう1つは文字列内にあります。

試す:

created = datetime.strptime((r.json()[x]["created_at"]).strip('"'), "%a %b %d %H:%M:%S +0000 %Y") 

strip('"')文字列から s を削除し"ます。

于 2013-02-16T10:29:26.127 に答える
2

I found the issue! @wrgrs solution worked, but actually it is from the dumps() being around it, created an extra set of quotes. (It was his solution that triggered my idea)

created = datetime.strptime(r.json()[x]["created_at"], "%a %b %d %H:%M:%S +0000 %Y") 

works just fine!

于 2013-02-16T10:36:40.583 に答える
0

今後 strptime を扱う場合は、デロリアンが提供する parse 関数を使用します。

>>> from delorean import parse
>>> parse("2011/01/01 00:00:00 -0700")
Delorean(datetime=2011-01-01 07:00:00+00:00, timezone=UTC)

幅広い文字列入力を受け入れ、さまざまなタイムゾーンを考慮し、シフトするための簡単なメカニズムを提供.datetimeして、デロリアン オブジェクトで必要な日時オブジェクトを簡単に取得します。

于 2013-02-21T06:06:05.690 に答える