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 以 unicode 格式返回文本,但我也尝试使用 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

在我看来,你的字符串中有一组额外的引号 - 一个 ' 表示它是一个字符串,一个 " 在字符串内。

尝试:

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

我发现了问题!@wrgrs 解决方案有效,但实际上它来自周围的 dumps() ,创建了一组额外的引号。(正是他的解决方案引发了我的想法)

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

工作得很好!

于 2013-02-16T10:36:40.583 回答
0

我会使用Delorean提供的解析函数来处理 strptime,例如

>>> 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在 delorean 对象上简单地检索所需的日期时间对象。

于 2013-02-21T06:06:05.690 回答