我正在尝试将字符串解析为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
答案 0 :(得分:3)
在我看来,你的字符串中有一组额外的引号 - 一个'表示它是一个字符串,一个“在字符串中。”
尝试:
created = datetime.strptime((r.json()[x]["created_at"]).strip('"'), "%a %b %d %H:%M:%S +0000 %Y")
strip('"')
从字符串中删除"
。
答案 1 :(得分:2)
我发现了这个问题! @wrgrs解决方案有效,但实际上它是来自dumps()围绕它,创建了一组额外的引号。 (这是他的解决方案引发了我的想法)
created = datetime.strptime(r.json()[x]["created_at"], "%a %b %d %H:%M:%S +0000 %Y")
工作得很好!
答案 2 :(得分: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)
它接受各种字符串输入,并考虑到不同的时区,并提供简单的移位机制,以便在delorean对象上检索所需的日期时间对象简单.datetime
。