Python转换日期时间不起作用



我正在尝试将字符串解析为python日期时间对象,这是代码:

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

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

尝试:

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

strip('"')从字符串中删除"s。

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

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

工作得很好!

我会使用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)

它接受广泛的字符串输入,并考虑不同的时区,并提供简单的转换机制,以在delorean对象上检索所需的日期时间对象(简单的.datetime)。

相关内容

  • 没有找到相关文章

最新更新